From d9e6716f40c6fb062ba02c337b2fb080843642e8 Mon Sep 17 00:00:00 2001 From: Sha Sha Chu Date: Thu, 20 Aug 2020 10:43:36 -0700 Subject: [PATCH] Fixing #836 (#839) --- .../ruleset/standard/NoUnusedImportsRule.kt | 6 ++++++ .../standard/NoUnusedImportsRuleTest.kt | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/NoUnusedImportsRule.kt b/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/NoUnusedImportsRule.kt index a0fa0adbb6..a6878ec8c8 100644 --- a/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/NoUnusedImportsRule.kt +++ b/ktlint-ruleset-standard/src/main/kotlin/com/pinterest/ktlint/ruleset/standard/NoUnusedImportsRule.kt @@ -146,6 +146,12 @@ class NoUnusedImportsRule : Rule("no-unused-imports") { // Contains list of all imports and checks if given import is present private fun checkIfParentImportExists(text: String): Boolean { + // Only check static imports; identified if they start with a capital letter indicating a + // class name rather than a sub-package + if (text.isNotEmpty() && text[0] !in 'A'..'Z') { + return false + } + val staticImports = imports.filter { it.endsWith(text) } staticImports.forEach { import -> var count = 0 diff --git a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/NoUnusedImportsRuleTest.kt b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/NoUnusedImportsRuleTest.kt index aaaa365fcc..9eac3da55c 100644 --- a/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/NoUnusedImportsRuleTest.kt +++ b/ktlint-ruleset-standard/src/test/kotlin/com/pinterest/ktlint/ruleset/standard/NoUnusedImportsRuleTest.kt @@ -553,6 +553,24 @@ class NoUnusedImportsRuleTest { assertThat(actual).isEqualTo(expected) } + } + """.trimIndent() + ).isEmpty() + ) + } + + @Test + fun `only redundant static imports should be removed`() { + assertThat( + NoUnusedImportsRule().lint( + """ + import com.foo.psi.abc + import com.foo.psi.findAnnotation + + fun main() { + val psi = getPsi() + psi.abc() + val bar = psi.findAnnotation(SOME_CONSTANT) } """.trimIndent() )