@@ -322,7 +322,8 @@ class ExtractSemanticDB extends Phase {
322
322
if ! isWildcard(sym.name) then
323
323
val symbol = symbolName(sym)
324
324
registerOccurrence(symbol, span, SymbolOccurrence .Role .DEFINITION )
325
- registerSymbol(sym, symbol, symkinds)
325
+ if ! sym.is(Package )
326
+ registerSymbol(sym, symbol, symkinds)
326
327
327
328
private def spanOfSymbol (sym : Symbol , span : Span )(given Context ): Span = {
328
329
val contents = if source.exists then source.content() else Array .empty[Char ]
@@ -347,6 +348,16 @@ class ExtractSemanticDB extends Phase {
347
348
}).toMap
348
349
end findGetters
349
350
351
+ def adjustSpanToName (span : Span , qualSpan : Span , name : Name )(given Context ) =
352
+ val end = span.end
353
+ val limit = qualSpan.end
354
+ val start =
355
+ if limit < end then
356
+ val len = name.toString.length
357
+ if source.content()(end - 1 ) == '`' then end - len - 2 else end - len
358
+ else limit
359
+ Span (start max end, end)
360
+
350
361
override def traverse (tree : Tree )(given Context ): Unit =
351
362
for annot <- tree.symbol.annotations do
352
363
if annot.tree.span.exists
@@ -355,6 +366,15 @@ class ExtractSemanticDB extends Phase {
355
366
traverse(annot.tree)
356
367
357
368
tree match
369
+ case tree : PackageDef =>
370
+ if ! excludeDef(tree.pid.symbol) && tree.pid.span.start != tree.pid.span.end
371
+ tree.pid match
372
+ case tree @ Select (qual, _) =>
373
+ traverse(qual)
374
+ registerDefinition(tree.symbol, adjustSpanToName(tree.span, qual.span, tree.symbol.name), Set .empty)
375
+ case tree @ Ident (name) =>
376
+ registerDefinition(tree.symbol, tree.span, Set .empty)
377
+ tree.stats.foreach(traverse)
358
378
case tree : ValDef if tree.symbol.is(Module ) => // skip module val
359
379
case tree : NamedDefTree
360
380
if ! excludeDef(tree.symbol) && tree.span.start != tree.span.end =>
@@ -415,22 +435,16 @@ class ExtractSemanticDB extends Phase {
415
435
if ! excludeUseStrict(tree.lhs.symbol, tree.lhs.span)
416
436
val name = tree.lhs.symbol.name
417
437
val setter = tree.lhs.symbol.owner.info.decls.find(s => s.name.startsWith(name.show) && s.name.isSetterName)
418
- registerUse(setter.orElse(tree.lhs.symbol), tree.lhs.span)
438
+ val span = tree.lhs.span
439
+ registerUse(setter.orElse(tree.lhs.symbol), adjustSpanToName(span, span, name))
419
440
traverse(tree.rhs)
420
441
case tree : Ident =>
421
442
if tree.name != nme.WILDCARD && ! excludeUseStrict(tree.symbol, tree.span) then
422
443
registerUse(tree.symbol, tree.span)
423
444
case tree : Select =>
424
445
val qualSpan = tree.qualifier.span
425
446
if ! excludeUseStrict(tree.symbol, tree.span) then
426
- val end = tree.span.end
427
- val limit = qualSpan.end
428
- val start =
429
- if limit < end then
430
- val len = tree.name.toString.length
431
- if source.content()(end - 1 ) == '`' then end - len - 1 else end - len
432
- else limit
433
- registerUse(tree.symbol, Span (start max limit, end))
447
+ registerUse(tree.symbol, adjustSpanToName(tree.span, qualSpan, tree.name))
434
448
if qualSpan.exists && qualSpan.start != qualSpan.end then
435
449
traverseChildren(tree)
436
450
case tree : Import =>
0 commit comments