Skip to content

Commit f54eecb

Browse files
committed
adjust extension method name in nameSpan
1 parent 1cd1054 commit f54eecb

File tree

2 files changed

+8
-15
lines changed

2 files changed

+8
-15
lines changed

compiler/src/dotty/tools/dotc/ast/Trees.scala

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -337,13 +337,16 @@ object Trees {
337337
* a calling chain from `viewExists`), in that case the return position is NoSpan.
338338
* Overridden in Bind
339339
*/
340-
def nameSpan: Span =
340+
def nameSpan(using Context): Span =
341341
if (span.exists) {
342342
val point = span.point
343343
if (rawMods.is(Synthetic) || span.isSynthetic || name.toTermName == nme.ERROR) Span(point)
344344
else {
345345
val realName = name.stripModuleClassSuffix.lastPart
346-
Span(point, point + realName.length, point)
346+
var length = realName.length
347+
if symbol.is(ExtensionMethod) && name.isExtensionName then
348+
length -= "extension_".length
349+
Span(point, point + length, point)
347350
}
348351
}
349352
else span
@@ -352,7 +355,7 @@ object Trees {
352355
* This is a point position if the definition is synthetic, or a range position
353356
* if the definition comes from source.
354357
*/
355-
def namePos: SourcePosition = source.atSpan(nameSpan)
358+
def namePos(using Context): SourcePosition = source.atSpan(nameSpan)
356359
}
357360

358361
/** Tree defines a new symbol and carries modifiers.
@@ -711,7 +714,7 @@ object Trees {
711714
override def isType: Boolean = name.isTypeName
712715
override def isTerm: Boolean = name.isTermName
713716

714-
override def nameSpan: Span =
717+
override def nameSpan(using Context): Span =
715718
if span.exists then Span(span.start, span.start + name.toString.length) else span
716719
}
717720

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

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ class ExtractSemanticDB extends Phase:
143143
return
144144
if !excludeDef(tree.symbol)
145145
&& tree.span.hasLength then
146-
registerDefinition(tree.symbol, tree.adjustedNameSpan, symbolKinds(tree), tree.source)
146+
registerDefinition(tree.symbol, tree.nameSpan, symbolKinds(tree), tree.source)
147147
val privateWithin = tree.symbol.privateWithin
148148
if privateWithin.exists then
149149
registerUseGuarded(None, privateWithin, spanOfSymbol(privateWithin, tree.span, tree.source), tree.source)
@@ -283,14 +283,6 @@ class ExtractSemanticDB extends Phase:
283283

284284
end PatternValDef
285285

286-
extension (tree: NamedDefTree):
287-
private def adjustedNameSpan(using Context): Span =
288-
val nameSpan = tree.nameSpan
289-
if tree.symbol.is(ExtensionMethod) && tree.name.isExtensionName then
290-
nameSpan.withEnd(nameSpan.end - ExtractSemanticDB.extensionPrefixLength)
291-
else
292-
nameSpan
293-
294286
/** Add semanticdb name of the given symbol to string builder */
295287
private def addSymName(b: StringBuilder, sym: Symbol)(using Context): Unit =
296288

@@ -599,8 +591,6 @@ object ExtractSemanticDB:
599591

600592
val name: String = "extractSemanticDB"
601593

602-
final val extensionPrefixLength = "extension_".length
603-
604594
def write(source: SourceFile, occurrences: List[SymbolOccurrence], symbolInfos: List[SymbolInformation])(using Context): Unit =
605595
def absolutePath(path: Path): Path = path.toAbsolutePath.normalize
606596
def commonPrefix[T](z: T)(i1: Iterable[T], i2: Iterable[T])(app: (T, T) => T): T =

0 commit comments

Comments
 (0)