Skip to content

Commit b7ce63a

Browse files
authored
Merge pull request #455 from themkat/less_strict_import_backticking
Only backtick hard keywords in imports
2 parents 0600f96 + fb91481 commit b7ce63a

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

server/src/main/kotlin/org/javacs/kt/imports/Imports.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@ private fun matchingPrefixLength(left: FqName, right: FqName): Int =
4040
.count()
4141

4242
private fun backtickBultins(fqName: FqName): String {
43-
val builtInKeywords = (KtTokens.SOFT_KEYWORDS.getTypes() + KtTokens.KEYWORDS.getTypes())
44-
.asSequence()
43+
val builtInKeywords = KtTokens.KEYWORDS.getTypes()
4544
.mapNotNull { (it as? KtKeywordToken)?.value }
4645
var result = fqName.asString()
4746
for (builtin in builtInKeywords) {

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,17 @@ class ImportTextEditTest : SingleFileTestFixture("imports", "Simple.kt") {
4747
assertThat(result.range, equalTo(range(1, 23, 1, 23)))
4848
assertThat(result.newText, equalTo("\n\nimport `fun`.`class`.someother.`package`.method.`var`.`val`"))
4949
}
50+
51+
@Test
52+
fun `should NOT wrap soft keywords or modifiers in backticks`() {
53+
// tests for a selection of soft keywords and modifiers
54+
// according to https://kotlinlang.org/docs/keyword-reference.html
55+
// both can be used as identifiers. (only hard keywords can not)
56+
val ktFile = languageServer.sourcePath.parsedFile(workspaceRoot.resolve(file).toUri())
57+
val importName = FqName("as.annotation.import.by.inner.file.field")
58+
val result = getImportTextEditEntry(ktFile, importName)
59+
60+
assertThat(result.range, equalTo(range(1, 23, 1, 23)))
61+
assertThat(result.newText, equalTo("\n\nimport `as`.annotation.import.by.inner.file.field"))
62+
}
5063
}

0 commit comments

Comments
 (0)