Skip to content

Commit 2ecaf44

Browse files
committed
Fix edge-case where function references highlights wrong line
1 parent 49782ed commit 2ecaf44

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

server/src/main/kotlin/org/javacs/kt/highlight/DocumentHighlight.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ private fun findDeclarationCursorSite(
3737
// important
3838
Pair(it,
3939
Location("",
40-
range(file.content, it.nameIdentifier?.textRangeInParent ?: return null)))
40+
range(file.content, it.nameIdentifier?.textRange ?: return null)))
4141
}
4242
}
4343

server/src/test/kotlin/org/javacs/kt/DocumentHighlightTest.kt

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,27 @@ class DocumentHighlightTest : SingleFileTestFixture("highlight", "DocumentHighli
9292

9393
assertThat(result, hasSize(2))
9494
val firstHighlight = result[0]
95-
assertThat(firstHighlight.range, equalTo(range(13, 14, 13, 23)))
95+
assertThat(firstHighlight.range, equalTo(range(13, 15, 13, 24)))
9696
assertThat(firstHighlight.kind, equalTo(DocumentHighlightKind.Text))
9797

9898
val secondHighlight = result[1]
9999
assertThat(secondHighlight.range, equalTo(range(14, 13, 14, 22)))
100100
assertThat(secondHighlight.kind, equalTo(DocumentHighlightKind.Text))
101101
}
102+
103+
@Test
104+
fun `should highlight function reference correctly`() {
105+
val fileUri = workspaceRoot.resolve(file).toUri().toString()
106+
val input = DocumentHighlightParams(TextDocumentIdentifier(fileUri), Position(2, 6))
107+
val result = languageServer.textDocumentService.documentHighlight(input).get()
108+
109+
assertThat(result, hasSize(2))
110+
val firstHighlight = result[0]
111+
assertThat(firstHighlight.range, equalTo(range(3, 5, 3, 13)))
112+
assertThat(firstHighlight.kind, equalTo(DocumentHighlightKind.Text))
113+
114+
val secondHighlight = result[1]
115+
assertThat(secondHighlight.range, equalTo(range(15, 5, 15, 13)))
116+
assertThat(secondHighlight.kind, equalTo(DocumentHighlightKind.Text))
117+
}
102118
}

server/src/test/resources/highlight/DocumentHighlight.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ fun somefunc(input: String) {
1010
}
1111

1212
// test shadowing of the global variable
13-
fun somefunc(globalval: String) {
13+
fun somefunc2(globalval: String) {
1414
println(globalval)
15+
somefunc("")
1516
}

0 commit comments

Comments
 (0)