@@ -165,12 +165,24 @@ class ExtractSemanticDB extends Phase with
165
165
|| sym.is(Synthetic )
166
166
|| sym.owner.is(Synthetic ) && ! sym.owner.isAnonymous && ! sym.isAllOf(EnumCase )
167
167
|| sym.isConstructor && sym.owner.is(ModuleClass )
168
- || sym.isAnonymous
169
168
|| excludeDefStrict(sym)
170
169
171
170
private def excludeDefStrict (sym : Symbol )(given Context ): Boolean =
172
171
sym.name.is(NameKinds .DefaultGetterName )
173
- || sym.name.isWildcard
172
+ || excludeSymbolStrict(sym)
173
+
174
+ private inline def (name : Name ) isEmptyNumbered : Boolean = name match
175
+ case NameKinds .AnyNumberedName (nme.EMPTY , _) => true
176
+ case _ => false
177
+
178
+ private def excludeSymbolStrict (sym : Symbol )(given Context ): Boolean =
179
+ sym.name.isWildcard
180
+ || sym.isAnonymous
181
+ || sym.name.isEmptyNumbered
182
+
183
+ private def excludeChildren (sym : Symbol )(given Context ): Boolean =
184
+ sym.isAllOf(HigherKinded | Param )
185
+ || ! sym.isAnonymous && sym.is(Synthetic , butNot= Module )
174
186
175
187
/** Uses of this symbol where the reference has given span should be excluded from semanticdb */
176
188
private def excludeUseStrict (sym : Symbol , span : Span )(given Context ): Boolean =
@@ -359,7 +371,7 @@ class ExtractSemanticDB extends Phase with
359
371
vparams <- vparamss
360
372
vparam <- vparams
361
373
do
362
- if ! vparam.name.isWildcard
374
+ if ! excludeSymbolStrict( vparam.symbol)
363
375
val symkinds =
364
376
getters.get(vparam.name).fold(SymbolKind .emptySet)(getter =>
365
377
if getter.mods.is(Mutable ) then SymbolKind .VarSet else SymbolKind .ValSet )
@@ -392,13 +404,16 @@ class ExtractSemanticDB extends Phase with
392
404
traverse(qual)
393
405
case tree => registerDefinition(tree.symbol, tree.span, Set .empty)
394
406
tree.stats.foreach(traverse)
395
- case tree : ValDef if tree.symbol.is(Module ) => // skip module val
396
- case tree : NamedDefTree
397
- if ! excludeDef(tree.symbol) && tree.span.hasLength =>
398
- registerDefinition(tree.symbol, tree.nameSpan, symbolKinds(tree))
399
- val privateWithin = tree.symbol.privateWithin
400
- if privateWithin.exists
401
- registerUse(privateWithin, spanOfSymbol(privateWithin, tree.span))
407
+ case tree : NamedDefTree =>
408
+ if tree.symbol.isAllOf(ModuleValCreationFlags )
409
+ return
410
+ if ! excludeDef(tree.symbol) && tree.span.hasLength
411
+ registerDefinition(tree.symbol, tree.nameSpan, symbolKinds(tree))
412
+ val privateWithin = tree.symbol.privateWithin
413
+ if privateWithin.exists
414
+ registerUse(privateWithin, spanOfSymbol(privateWithin, tree.span))
415
+ else if ! excludeSymbolStrict(tree.symbol)
416
+ registerSymbol(tree.symbol, symbolName(tree.symbol), symbolKinds(tree))
402
417
tree match
403
418
case tree : ValDef if tree.symbol.isAllOf(EnumValue ) =>
404
419
tree.rhs match
@@ -411,8 +426,9 @@ class ExtractSemanticDB extends Phase with
411
426
case tree : DefDef if tree.symbol.isConstructor => // ignore typeparams for secondary ctors
412
427
tree.vparamss.foreach(_.foreach(traverse))
413
428
traverse(tree.rhs)
414
- case _ => traverseChildren(tree)
415
- case tree : (ValDef | DefDef | TypeDef ) if tree.symbol.is(Synthetic , butNot= Module ) && ! tree.symbol.isAnonymous => // skip
429
+ case tree =>
430
+ if ! excludeChildren(tree.symbol)
431
+ traverseChildren(tree)
416
432
case tree : Template =>
417
433
val ctorSym = tree.constr.symbol
418
434
if ! excludeDef(ctorSym)
0 commit comments