Skip to content

Commit 50a43b9

Browse files
committed
No need to resolve fake symbols from RefinedTypes
1 parent 9375ab1 commit 50a43b9

File tree

3 files changed

+119
-124
lines changed

3 files changed

+119
-124
lines changed

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

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -109,16 +109,13 @@ class ExtractSemanticDB extends Phase:
109109
|| sym.isOldStyleImplicitConversion(forImplicitClassOnly = true)
110110

111111
/** Uses of this symbol where the reference has given span should be excluded from semanticdb */
112-
private def excludeUse(qualifier: Option[Symbol], sym: SemanticSymbol)(using Context): Boolean =
113-
sym match
114-
case sym: Symbol =>
115-
!sym.exists
116-
|| excludeDefOrUse(sym)
117-
|| sym.isConstructor && sym.owner.isAnnotation
118-
|| sym == defn.Any_typeCast
119-
|| sym.owner == defn.OpsPackageClass
120-
|| qualifier.exists(excludeQual)
121-
case fake: FakeSymbol => false // do not exclude fake symbols
112+
private def excludeUse(qualifier: Option[Symbol], sym: Symbol)(using Context): Boolean =
113+
!sym.exists
114+
|| excludeDefOrUse(sym)
115+
|| sym.isConstructor && sym.owner.isAnnotation
116+
|| sym == defn.Any_typeCast
117+
|| sym.owner == defn.OpsPackageClass
118+
|| qualifier.exists(excludeQual)
122119

123120
private def traverseAnnotsOfDefinition(sym: Symbol)(using Context): Unit =
124121
for annot <- sym.annotations do
@@ -337,11 +334,11 @@ class ExtractSemanticDB extends Phase:
337334
occurrences += occ
338335
generated += occ
339336

340-
private def registerUseGuarded(qualSym: Option[Symbol], sym: SemanticSymbol, span: Span, treeSource: SourceFile)(using Context) =
337+
private def registerUseGuarded(qualSym: Option[Symbol], sym: Symbol, span: Span, treeSource: SourceFile)(using Context) =
341338
if !excludeUse(qualSym, sym) && !span.isZeroExtent then
342339
registerUse(sym, span, treeSource)
343340

344-
private def registerUse(sym: SemanticSymbol, span: Span, treeSource: SourceFile)(using Context): Unit =
341+
private def registerUse(sym: Symbol, span: Span, treeSource: SourceFile)(using Context): Unit =
345342
registerUse(sym.symbolName, span, treeSource)
346343

347344
private def registerUse(symbol: String, span: Span, treeSource: SourceFile)(using Context): Unit =

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

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,26 +20,26 @@ import dotty.tools.dotc.core.Names.Designator
2020
class TypeOps:
2121
import SymbolScopeOps._
2222
import Scala3.given
23-
private val paramRefSymtab = mutable.Map[(LambdaType, Name), SemanticSymbol]()
24-
private val refinementSymtab = mutable.Map[(RefinedType, Name), SemanticSymbol]()
23+
private val paramRefSymtab = mutable.Map[(LambdaType, Name), Symbol]()
24+
private val refinementSymtab = mutable.Map[(RefinedType, Name), Symbol]()
2525

2626
// save generated fake symbols so we can insert them into symbols section of SemanticDB
2727
val fakeSymbols = mutable.Set[FakeSymbol]()
2828
given typeOps: TypeOps = this
2929

30-
extension [T <: LambdaType | RefinedType](symtab: mutable.Map[(T, Name), SemanticSymbol])
30+
extension [T <: LambdaType | RefinedType](symtab: mutable.Map[(T, Name), Symbol])
3131
private def lookup(
3232
binder: T,
3333
name: Name,
34-
)(using Context): Option[SemanticSymbol] =
34+
)(using Context): Option[Symbol] =
3535
symtab.get((binder, name))
3636

37-
extension [T <: LambdaType | RefinedType](symtab: mutable.Map[(T, Name), SemanticSymbol])
37+
extension [T <: LambdaType | RefinedType](symtab: mutable.Map[(T, Name), Symbol])
3838
private def lookupOrErr(
3939
binder: T,
4040
name: Name,
4141
parent: Symbol,
42-
)(using Context): Option[SemanticSymbol] =
42+
)(using Context): Option[Symbol] =
4343
// In case refinement or type param cannot be accessed from traverser and
4444
// no symbols are registered to the symbol table, fall back to Type.member
4545
symtab.lookup(binder, name) match
@@ -66,8 +66,8 @@ class TypeOps:
6666
fakeSymbols.add(sym)
6767

6868
extension (tpe: Type)
69-
def lookupSym(name: Name)(using Context): Option[SemanticSymbol] = {
70-
def loop(ty: Type): Option[SemanticSymbol] = ty match
69+
def lookupSym(name: Name)(using Context): Option[Symbol] = {
70+
def loop(ty: Type): Option[Symbol] = ty match
7171
case rt: RefinedType =>
7272
refinementSymtab.lookup(rt, name).orElse(
7373
loop(rt.parent)
@@ -391,9 +391,7 @@ class TypeOps:
391391

392392
val decls: List[SemanticSymbol] = refinedInfos.map { (name, info) =>
393393
refinementSymtab.lookup(rt, name).getOrElse {
394-
val fakeSym = RefinementSymbol(sym, name, info).tap(registerFakeSymbol)
395-
refinementSymtab((rt, name)) = fakeSym
396-
fakeSym
394+
RefinementSymbol(sym, name, info).tap(registerFakeSymbol)
397395
}
398396
}
399397
val sdecls = decls.sscopeOpt(using LinkMode.HardlinkChildren)

0 commit comments

Comments
 (0)