File tree Expand file tree Collapse file tree 5 files changed +16
-5
lines changed
compiler/src/dotty/tools/dotc Expand file tree Collapse file tree 5 files changed +16
-5
lines changed Original file line number Diff line number Diff line change @@ -80,6 +80,7 @@ class ExtractSemanticDB extends Phase:
8080 || sym.is(Synthetic )
8181 || sym.isSetter
8282 || sym.isOldStyleImplicitConversion(forImplicitClassOnly = true )
83+ || sym.owner.isGivenInstanceSummoner
8384 || excludeDefOrUse(sym)
8485
8586 private def excludeDefOrUse (sym : Symbol )(using Context ): Boolean =
Original file line number Diff line number Diff line change @@ -100,6 +100,17 @@ object SymUtils:
100100 case _ =>
101101 false
102102
103+ def isGivenInstanceSummoner (using Context ): Boolean =
104+ def isCodefined (info : Type ): Boolean = info.stripPoly match
105+ case mt : MethodType =>
106+ // given summoner can only have contextual params
107+ mt.isImplicitMethod && isCodefined(mt.resultType)
108+ case mt : ExprType =>
109+ isCodefined(mt.resultType)
110+ case res =>
111+ self.isCoDefinedGiven(res.typeSymbol)
112+ self.isAllOf(Given | Method ) && isCodefined(self.info)
113+
103114 def useCompanionAsMirror (using Context ): Boolean = self.linkedClass.exists && ! self.is(Scala2x )
104115
105116 /** Is this a sealed class or trait for which a sum mirror is generated?
Original file line number Diff line number Diff line change @@ -25,7 +25,7 @@ given X/*->givens::X#*/ with
2525given (using X /* ->givens::X#*/ ): Y /* ->givens::Y#*/ with
2626 def doY /* <-givens::InventedNames$package.given_Y#doY().*/ = " 7"
2727
28- given [T /* <-givens::InventedNames$package.given_Z_T#[T]*//* <-givens::InventedNames$package.given_Z_T().[T] */ ]: Z /* ->givens::Z#*/ [T /* ->givens::InventedNames$package.given_Z_T#[T]*/ ] with
28+ given [T /* <-givens::InventedNames$package.given_Z_T#[T]*/ ]: Z /* ->givens::Z#*/ [T /* ->givens::InventedNames$package.given_Z_T#[T]*/ ] with
2929 def doZ /* <-givens::InventedNames$package.given_Z_T#doZ().*/ : List /* ->scala::package.List#*/ [T /* ->givens::InventedNames$package.given_Z_T#[T]*/ ] = Nil /* ->scala::package.Nil.*/
3030
3131
@@ -39,4 +39,4 @@ val f/*<-givens::InventedNames$package.f.*/ = given_Float/*->givens::InventedNam
3939val g /* <-givens::InventedNames$package.g.*/ = `* *`/* ->givens::InventedNames$package.`* *`.*/
4040val x /* <-givens::InventedNames$package.x.*/ = given_X/* ->givens::InventedNames$package.given_X.*/
4141val y /* <-givens::InventedNames$package.y.*/ = given_Y/* ->givens::InventedNames$package.given_Y().*/
42- val z /* <-givens::InventedNames$package.z.*/ = given_Z_T/* ->givens::InventedNames$package.given_Z_T().*/ [String /* ->scala::Predef.String#*/ ]
42+ val z /* <-givens::InventedNames$package.z.*/ = given_Z_T/* ->givens::InventedNames$package.given_Z_T().*/ [String /* ->scala::Predef.String#*/ ]
Original file line number Diff line number Diff line change @@ -39,4 +39,4 @@ val f = given_Float
3939val g = `* *`
4040val x = given_X
4141val y = given_Y
42- val z = given_Z_T[String ]
42+ val z = given_Z_T[String ]
Original file line number Diff line number Diff line change @@ -1684,7 +1684,7 @@ Uri => InventedNames.scala
16841684Text => empty
16851685Language => Scala
16861686Symbols => 45 entries
1687- Occurrences => 62 entries
1687+ Occurrences => 61 entries
16881688
16891689Symbols:
16901690givens/InventedNames$package. => final package object givens extends Object { self: givens.type => +24 decls }
@@ -1767,7 +1767,6 @@ Occurrences:
17671767[24:17..24:18): Y -> givens/Y#
17681768[25:6..25:9): doY <- givens/InventedNames$package.given_Y#doY().
17691769[27:7..27:8): T <- givens/InventedNames$package.given_Z_T#[T]
1770- [27:7..27:8): T <- givens/InventedNames$package.given_Z_T().[T]
17711770[27:11..27:12): Z -> givens/Z#
17721771[27:13..27:14): T -> givens/InventedNames$package.given_Z_T#[T]
17731772[28:6..28:9): doZ <- givens/InventedNames$package.given_Z_T#doZ().
You can’t perform that action at this time.
0 commit comments