Skip to content

Commit e68cc69

Browse files
natsukagamitgodzik
authored andcommitted
Ignore ending $ when looking at end marker names (scala#22798)
## Fix scalameta/metals#7246 - Add a test for renaming local objects - Drop ending `$` marker when looking for end marker names [Cherry-picked 8027996]
1 parent db24888 commit e68cc69

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

presentation-compiler/src/main/dotty/tools/pc/PcCollector.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ object EndMarker:
315315
def getPosition(df: NamedDefTree, pos: SourcePosition, sourceText: String)(
316316
implicit ct: Context
317317
): Option[SourcePosition] =
318-
val name = df.name.toString()
318+
val name = df.name.toString().stripSuffix("$")
319319
val endMarkerLine =
320320
sourceText.slice(df.span.start, df.span.end).split('\n').last
321321
val index = endMarkerLine.length() - name.length()

presentation-compiler/test/dotty/tools/pc/tests/edit/PcRenameSuite.scala

+11
Original file line numberDiff line numberDiff line change
@@ -534,3 +534,14 @@ class PcRenameSuite extends BasePcRenameSuite:
534534
|""".stripMargin,
535535
wrap = false
536536
)
537+
538+
@Test def `local-object-with-end-rename` =
539+
check(
540+
"""|def bar =
541+
| object <<fo@@o>>:
542+
| def aaa = ???
543+
| end <<foo>>
544+
| 1
545+
|""".stripMargin,
546+
wrap = false
547+
)

presentation-compiler/test/dotty/tools/pc/tests/tokens/SemanticTokensSuite.scala

+11-2
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ class SemanticTokensSuite extends BaseSemanticTokensSuite:
258258
| } = new:
259259
| def <<scalameta>>/*method,definition*/ = "4.0"
260260
| <<V>>/*variable,readonly*/.<<scalameta>>/*method*/
261-
|end StructuralTypes
261+
|end <<StructuralTypes>>/*class,definition*/
262262
|""".stripMargin
263263
)
264264

@@ -431,4 +431,13 @@ class SemanticTokensSuite extends BaseSemanticTokensSuite:
431431
| <<usage>>/*method*/[<<Option>>/*class,abstract*/[<<Int>>/*class,abstract*/]](<<_>>/*parameter,readonly*/.<<typeArg>>/*method*/[<<Some>>/*class*/[<<Int>>/*class,abstract*/]].<<value>>/*variable,readonly*/.<<inferredTypeArg>>/*method*/[<<String>>/*type*/]("str"))
432432
|}
433433
|""".stripMargin
434-
)
434+
)
435+
436+
@Test def `local-object-with-end-i7246` =
437+
check(
438+
"""|def <<bar>>/*method,definition*/ =
439+
| object <<foo>>/*class*/:
440+
| def <<aaa>>/*method,definition*/ = <<???>>/*method*/
441+
| end <<foo>>/*class,definition*/
442+
|""".stripMargin
443+
)

0 commit comments

Comments
 (0)