@@ -6,7 +6,7 @@ import core._
66import Phases ._
77import ast .tpd ._
88import ast .untpd .given
9- import ast .Trees .mods
9+ import ast .Trees .{ mods , WithEndMarker }
1010import Contexts ._
1111import Symbols ._
1212import Flags ._
@@ -139,47 +139,46 @@ class ExtractSemanticDB extends Phase:
139139 case tree => registerDefinition(tree.symbol, tree.span, Set .empty, tree.source)
140140 tree.stats.foreach(traverse)
141141 case tree : NamedDefTree =>
142- if tree.symbol.isAllOf(ModuleValCreationFlags ) then
143- return
144- if ! excludeDef(tree.symbol)
145- && tree.span.hasLength then
146- registerDefinition(tree.symbol, tree.nameSpan, symbolKinds(tree), tree.source)
147- val privateWithin = tree.symbol.privateWithin
148- if privateWithin.exists then
149- registerUseGuarded(None , privateWithin, spanOfSymbol(privateWithin, tree.span, tree.source), tree.source)
150- else if ! excludeSymbol(tree.symbol) then
151- registerSymbol(tree.symbol, symbolName(tree.symbol), symbolKinds(tree))
152- tree match
153- case tree : ValDef
154- if tree.symbol.isAllOf(EnumValue ) =>
155- tree.rhs match
156- case Block (TypeDef (_, template : Template ) :: _, _) => // simple case with specialised extends clause
157- template.parents.filter(! _.span.isZeroExtent).foreach(traverse)
158- case _ => // calls $new
159- case tree : ValDef
160- if tree.symbol.isSelfSym =>
161- if tree.tpt.span.hasLength then
162- traverse(tree.tpt)
163- case tree : DefDef
164- if tree.symbol.isConstructor => // ignore typeparams for secondary ctors
165- tree.trailingParamss.foreach(_.foreach(traverse))
166- traverse(tree.rhs)
167- case tree : (DefDef | ValDef )
168- if tree.symbol.isSyntheticWithIdent =>
142+ if ! tree.symbol.isAllOf(ModuleValCreationFlags ) then
143+ if ! excludeDef(tree.symbol)
144+ && tree.span.hasLength then
145+ registerDefinition(tree.symbol, tree.nameSpan, symbolKinds(tree), tree.source)
146+ val privateWithin = tree.symbol.privateWithin
147+ if privateWithin.exists then
148+ registerUseGuarded(None , privateWithin, spanOfSymbol(privateWithin, tree.span, tree.source), tree.source)
149+ else if ! excludeSymbol(tree.symbol) then
150+ registerSymbol(tree.symbol, symbolName(tree.symbol), symbolKinds(tree))
169151 tree match
170- case tree : DefDef =>
171- tree.paramss.foreach(_.foreach(param => registerSymbolSimple(param.symbol)))
172- case tree : ValDef if tree.symbol.is(Given ) => traverse(tree.tpt)
173- case _ =>
174- if ! tree.symbol.isGlobal then
175- localBodies(tree.symbol) = tree.rhs
176- // ignore rhs
177- case PatternValDef (pat, rhs) =>
178- traverse(rhs)
179- PatternValDef .collectPats(pat).foreach(traverse)
180- case tree =>
181- if ! excludeChildren(tree.symbol) then
182- traverseChildren(tree)
152+ case tree : ValDef
153+ if tree.symbol.isAllOf(EnumValue ) =>
154+ tree.rhs match
155+ case Block (TypeDef (_, template : Template ) :: _, _) => // simple case with specialised extends clause
156+ template.parents.filter(! _.span.isZeroExtent).foreach(traverse)
157+ case _ => // calls $new
158+ case tree : ValDef
159+ if tree.symbol.isSelfSym =>
160+ if tree.tpt.span.hasLength then
161+ traverse(tree.tpt)
162+ case tree : DefDef
163+ if tree.symbol.isConstructor => // ignore typeparams for secondary ctors
164+ tree.trailingParamss.foreach(_.foreach(traverse))
165+ traverse(tree.rhs)
166+ case tree : (DefDef | ValDef )
167+ if tree.symbol.isSyntheticWithIdent =>
168+ tree match
169+ case tree : DefDef =>
170+ tree.paramss.foreach(_.foreach(param => registerSymbolSimple(param.symbol)))
171+ case tree : ValDef if tree.symbol.is(Given ) => traverse(tree.tpt)
172+ case _ =>
173+ if ! tree.symbol.isGlobal then
174+ localBodies(tree.symbol) = tree.rhs
175+ // ignore rhs
176+ case PatternValDef (pat, rhs) =>
177+ traverse(rhs)
178+ PatternValDef .collectPats(pat).foreach(traverse)
179+ case tree =>
180+ if ! excludeChildren(tree.symbol) then
181+ traverseChildren(tree)
183182 case tree : Template =>
184183 val ctorSym = tree.constr.symbol
185184 if ! excludeDef(ctorSym) then
@@ -240,6 +239,13 @@ class ExtractSemanticDB extends Phase:
240239 case _ =>
241240 traverseChildren(tree)
242241
242+ tree match
243+ case tree : WithEndMarker [t] =>
244+ val endSpan = tree.endSpan
245+ if endSpan.exists then
246+ registerUseGuarded(None , tree.symbol, endSpan, tree.source)
247+ case _ =>
248+
243249 end traverse
244250
245251 private def funParamSymbol (funSym : Symbol )(using Context ): Name => String =
0 commit comments