Skip to content

Commit ec3a21a

Browse files
committed
semanticdb - adjust occurences
don't add definition occurences for given instance parameters
1 parent 9b5338d commit ec3a21a

File tree

5 files changed

+16
-5
lines changed

5 files changed

+16
-5
lines changed

compiler/src/dotty/tools/dotc/semanticdb/ExtractSemanticDB.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff 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 =

compiler/src/dotty/tools/dotc/transform/SymUtils.scala

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff 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?

tests/semanticdb/expect/InventedNames.expect.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ given X/*->givens::X#*/ with
2525
given (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
3939
val g/*<-givens::InventedNames$package.g.*/ = `* *`/*->givens::InventedNames$package.`* *`.*/
4040
val x/*<-givens::InventedNames$package.x.*/ = given_X/*->givens::InventedNames$package.given_X.*/
4141
val 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#*/]

tests/semanticdb/expect/InventedNames.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,4 @@ val f = given_Float
3939
val g = `* *`
4040
val x = given_X
4141
val y = given_Y
42-
val z = given_Z_T[String]
42+
val z = given_Z_T[String]

tests/semanticdb/metac.expect

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1684,7 +1684,7 @@ Uri => InventedNames.scala
16841684
Text => empty
16851685
Language => Scala
16861686
Symbols => 45 entries
1687-
Occurrences => 62 entries
1687+
Occurrences => 61 entries
16881688

16891689
Symbols:
16901690
givens/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().

0 commit comments

Comments
 (0)