Unused symbol inspection should detect enum entry
#KT-30612 Fixed
This commit is contained in:
@@ -63,7 +63,6 @@ import org.jetbrains.kotlin.idea.search.usagesSearch.getAccessorNames
|
|||||||
import org.jetbrains.kotlin.idea.search.usagesSearch.getClassNameForCompanionObject
|
import org.jetbrains.kotlin.idea.search.usagesSearch.getClassNameForCompanionObject
|
||||||
import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope
|
import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope
|
||||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
|
||||||
import org.jetbrains.kotlin.idea.util.compat.psiSearchHelperInstance
|
import org.jetbrains.kotlin.idea.util.compat.psiSearchHelperInstance
|
||||||
import org.jetbrains.kotlin.idea.util.hasActualsFor
|
import org.jetbrains.kotlin.idea.util.hasActualsFor
|
||||||
import org.jetbrains.kotlin.js.resolve.diagnostics.findPsi
|
import org.jetbrains.kotlin.js.resolve.diagnostics.findPsi
|
||||||
@@ -199,7 +198,6 @@ class UnusedSymbolInspection : AbstractKotlinInspection() {
|
|||||||
// Simple PSI-based checks
|
// Simple PSI-based checks
|
||||||
if (declaration is KtObjectDeclaration && declaration.isCompanion()) return // never mark companion object as unused (there are too many reasons it can be needed for)
|
if (declaration is KtObjectDeclaration && declaration.isCompanion()) return // never mark companion object as unused (there are too many reasons it can be needed for)
|
||||||
|
|
||||||
if (declaration is KtEnumEntry) return
|
|
||||||
if (declaration.hasModifier(KtTokens.OVERRIDE_KEYWORD)) return
|
if (declaration.hasModifier(KtTokens.OVERRIDE_KEYWORD)) return
|
||||||
if (declaration is KtProperty && declaration.isLocal) return
|
if (declaration is KtProperty && declaration.isLocal) return
|
||||||
if (declaration is KtParameter && (declaration.getParent().parent !is KtPrimaryConstructor || !declaration.hasValOrVar())) return
|
if (declaration is KtParameter && (declaration.getParent().parent !is KtPrimaryConstructor || !declaration.hasValOrVar())) return
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
// PROBLEM: none
|
||||||
|
enum class MyEnum(val i: Int) {
|
||||||
|
HELLO<caret>(42),
|
||||||
|
WORLD("42")
|
||||||
|
;
|
||||||
|
|
||||||
|
constructor(s: String): this(42)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
MyEnum.HELLO
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
// "Safe delete 'WORLD'" "true"
|
||||||
|
enum class MyEnum {
|
||||||
|
HELLO,
|
||||||
|
WORLD<caret>
|
||||||
|
}
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
MyEnum.HELLO
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
// "Safe delete 'WORLD'" "true"
|
||||||
|
enum class MyEnum {
|
||||||
|
HELLO,
|
||||||
|
}
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
MyEnum.HELLO
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
// "Safe delete 'WORLD'" "true"
|
||||||
|
enum class MyEnum(val i: Int) {
|
||||||
|
HELLO(42),
|
||||||
|
WORLD<caret>("42"),
|
||||||
|
E(24)
|
||||||
|
;
|
||||||
|
|
||||||
|
constructor(s: String): this(42)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
MyEnum.HELLO
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
// "Safe delete 'WORLD'" "true"
|
||||||
|
enum class MyEnum(val i: Int) {
|
||||||
|
HELLO(42),
|
||||||
|
E(24)
|
||||||
|
;
|
||||||
|
|
||||||
|
constructor(s: String): this(42)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
MyEnum.HELLO
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
// "Safe delete 'WORLD'" "true"
|
||||||
|
enum class MyEnum(val i: Int) {
|
||||||
|
WORLD<caret>("42"),
|
||||||
|
HELLO(42)
|
||||||
|
;
|
||||||
|
|
||||||
|
constructor(s: String): this(42)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
MyEnum.HELLO
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
// "Safe delete 'WORLD'" "true"
|
||||||
|
enum class MyEnum(val i: Int) {
|
||||||
|
HELLO(42)
|
||||||
|
;
|
||||||
|
|
||||||
|
constructor(s: String): this(42)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
MyEnum.HELLO
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
// "Safe delete 'HELLO'" "true"
|
||||||
|
enum class MyEnum {
|
||||||
|
HELLO<caret>
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
// "Safe delete 'HELLO'" "true"
|
||||||
|
enum class MyEnum {
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
// "Safe delete 'HELLO'" "true"
|
||||||
|
enum class MyEnum {
|
||||||
|
HELLO<caret>,
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
// "Safe delete 'HELLO'" "true"
|
||||||
|
enum class MyEnum {
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
// "Safe delete 'HELLO'" "true"
|
||||||
|
import MyEnum.HELLO
|
||||||
|
|
||||||
|
enum class MyEnum {
|
||||||
|
HELLO<caret>,
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
// "Safe delete 'HELLO'" "true"
|
||||||
|
|
||||||
|
enum class MyEnum {
|
||||||
|
}
|
||||||
+5
@@ -8728,6 +8728,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest {
|
|||||||
runTest("idea/testData/inspectionsLocal/unusedSymbol/typeAlias.kt");
|
runTest("idea/testData/inspectionsLocal/unusedSymbol/typeAlias.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("unusedEnumEntry.kt")
|
||||||
|
public void testUnusedEnumEntry() throws Exception {
|
||||||
|
runTest("idea/testData/inspectionsLocal/unusedSymbol/unusedEnumEntry.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("withJvmNameUsedFromKotlin.kt")
|
@TestMetadata("withJvmNameUsedFromKotlin.kt")
|
||||||
public void testWithJvmNameUsedFromKotlin() throws Exception {
|
public void testWithJvmNameUsedFromKotlin() throws Exception {
|
||||||
runTest("idea/testData/inspectionsLocal/unusedSymbol/withJvmNameUsedFromKotlin.kt");
|
runTest("idea/testData/inspectionsLocal/unusedSymbol/withJvmNameUsedFromKotlin.kt");
|
||||||
|
|||||||
@@ -10121,6 +10121,11 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
|||||||
runTest("idea/testData/quickfix/removeUnused/notTriangle.kt");
|
runTest("idea/testData/quickfix/removeUnused/notTriangle.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("simpleUnusedEnumEntry.kt")
|
||||||
|
public void testSimpleUnusedEnumEntry() throws Exception {
|
||||||
|
runTest("idea/testData/quickfix/removeUnused/simpleUnusedEnumEntry.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("triangle.kt")
|
@TestMetadata("triangle.kt")
|
||||||
public void testTriangle() throws Exception {
|
public void testTriangle() throws Exception {
|
||||||
runTest("idea/testData/quickfix/removeUnused/triangle.kt");
|
runTest("idea/testData/quickfix/removeUnused/triangle.kt");
|
||||||
@@ -10156,6 +10161,31 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
|||||||
runTest("idea/testData/quickfix/removeUnused/unusedDelegatedConstructorSuper.kt");
|
runTest("idea/testData/quickfix/removeUnused/unusedDelegatedConstructorSuper.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("unusedEnumEntry.kt")
|
||||||
|
public void testUnusedEnumEntry() throws Exception {
|
||||||
|
runTest("idea/testData/quickfix/removeUnused/unusedEnumEntry.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("unusedEnumEntry2.kt")
|
||||||
|
public void testUnusedEnumEntry2() throws Exception {
|
||||||
|
runTest("idea/testData/quickfix/removeUnused/unusedEnumEntry2.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("unusedEnumEntry3.kt")
|
||||||
|
public void testUnusedEnumEntry3() throws Exception {
|
||||||
|
runTest("idea/testData/quickfix/removeUnused/unusedEnumEntry3.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("unusedEnumEntry4.kt")
|
||||||
|
public void testUnusedEnumEntry4() throws Exception {
|
||||||
|
runTest("idea/testData/quickfix/removeUnused/unusedEnumEntry4.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("unusedEnumEntry5.kt")
|
||||||
|
public void testUnusedEnumEntry5() throws Exception {
|
||||||
|
runTest("idea/testData/quickfix/removeUnused/unusedEnumEntry5.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("unusedFunction.kt")
|
@TestMetadata("unusedFunction.kt")
|
||||||
public void testUnusedFunction() throws Exception {
|
public void testUnusedFunction() throws Exception {
|
||||||
runTest("idea/testData/quickfix/removeUnused/unusedFunction.kt");
|
runTest("idea/testData/quickfix/removeUnused/unusedFunction.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user