@@ -333,35 +333,44 @@ object Trees {
333
333
334
334
import WithEndMarker .*
335
335
336
- final def endToken : SimpleName = endMarker.stripModuleClassSuffix.lastPart
336
+ final def endSpan (using Context ): Span =
337
+ self.getAttachment(EndIndex ) match
338
+ case Some (end) =>
339
+ val realName = endName.stripModuleClassSuffix.lastPart
340
+ Span (end - realName.length, end)
341
+ case none => NoSpan
337
342
338
- protected def endMarker : Name
343
+ protected def endName ( using Context ) : Name
339
344
340
- final def withEndSpan ( span : Span ): self.type =
341
- self.withAttachment(EndMarker , span )
345
+ final def withEndIndex ( index : Int ): self.type =
346
+ self.withAttachment(EndIndex , index )
342
347
343
- final def withEndSpan (copyFrom : WithEndMarker ): self.type =
344
- copyFrom.endSpan .foreach(span => withEndSpan(span = span ))
348
+ final def withEndIndex (copyFrom : WithEndMarker ): self.type =
349
+ copyFrom.endIndex .foreach(index => withEndIndex(index ))
345
350
this
346
351
347
- final def dropEndSpan : self.type =
348
- self.removeAttachment(EndMarker )
352
+ final def dropEndIndex : self.type =
353
+ self.removeAttachment(EndIndex )
349
354
this
350
355
351
- final def endSpan : Option [Span ] = self.getAttachment(EndMarker )
356
+ protected def endIndex : Option [Int ] = self.getAttachment(EndIndex )
352
357
353
358
object WithEndMarker :
354
359
/** Property key for trees with an `end` marker */
355
- private val EndMarker : Property .StickyKey [Span ] = Property .StickyKey ()
360
+ private val EndIndex : Property .StickyKey [Int ] = Property .StickyKey ()
356
361
357
362
end WithEndMarker
358
363
359
364
abstract class NamedDefTree [- T >: Untyped ](implicit @ constructorOnly src : SourceFile )
360
365
extends NameTree [T ] with DefTree [T ] with WithEndMarker {
361
366
type ThisTree [- T >: Untyped ] <: NamedDefTree [T ]
362
367
363
- protected def endMarker =
368
+ protected def endName ( using Context ) =
364
369
if name == nme.CONSTRUCTOR then nme.this_
370
+ else srcName
371
+
372
+ protected def srcName (using Context ): Name =
373
+ if symbol.isPackageObject then symbol.owner.name
365
374
else name
366
375
367
376
/** The position of the name defined by this definition.
@@ -376,7 +385,6 @@ object Trees {
376
385
val point = span.point
377
386
if (rawMods.is(Synthetic ) || span.isSynthetic || name.toTermName == nme.ERROR ) Span (point)
378
387
else {
379
- val srcName = if symbol.isPackageObject then symbol.owner.name else name
380
388
val realName = srcName.stripModuleClassSuffix.lastPart
381
389
Span (point, point + realName.length, point)
382
390
}
@@ -895,7 +903,7 @@ object Trees {
895
903
extends ProxyTree [T ] with WithEndMarker {
896
904
type ThisTree [- T >: Untyped ] = PackageDef [T ]
897
905
def forwardTo : RefTree [T ] = pid
898
- protected def endMarker : Name = pid.name
906
+ protected def endName ( using Context ) : Name = pid.name
899
907
}
900
908
901
909
/** arg @annot */
0 commit comments