From 50dc9a14a6daeb40cd96526dbda4a413739cbace Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 15 Dec 2017 12:54:23 +0300 Subject: [PATCH] May be constant: fix corner case with getter & initializer --- .../inspections/MayBeConstantInspection.kt | 2 +- .../mayBeConstant/getterWithInitializer.kt | 3 +++ .../LocalInspectionTestGenerated.java | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 idea/testData/inspectionsLocal/mayBeConstant/getterWithInitializer.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/MayBeConstantInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/MayBeConstantInspection.kt index b021856ce98..f377de707af 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/MayBeConstantInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/MayBeConstantInspection.kt @@ -65,7 +65,7 @@ class MayBeConstantInspection : AbstractKotlinInspection() { companion object { fun KtProperty.getStatus(): Status { - if (isLocal || isVar || hasModifier(KtTokens.CONST_KEYWORD) || containingClassOrObject is KtClass) { + if (isLocal || isVar || hasModifier(KtTokens.CONST_KEYWORD) || containingClassOrObject is KtClass || getter != null) { return NONE } val initializer = initializer diff --git a/idea/testData/inspectionsLocal/mayBeConstant/getterWithInitializer.kt b/idea/testData/inspectionsLocal/mayBeConstant/getterWithInitializer.kt new file mode 100644 index 00000000000..f498565cb8b --- /dev/null +++ b/idea/testData/inspectionsLocal/mayBeConstant/getterWithInitializer.kt @@ -0,0 +1,3 @@ +// PROBLEM: none + +val withGetter = 42 get() = field \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java index 6023917c8ea..5cacd231590 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -1289,6 +1289,12 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/inspectionsLocal/mayBeConstant"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), TargetBackend.ANY, true); } + @TestMetadata("array.kt") + public void testArray() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/mayBeConstant/array.kt"); + doTest(fileName); + } + @TestMetadata("cascadeConst.kt") public void testCascadeConst() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/mayBeConstant/cascadeConst.kt"); @@ -1307,12 +1313,24 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest { doTest(fileName); } + @TestMetadata("enum.kt") + public void testEnum() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/mayBeConstant/enum.kt"); + doTest(fileName); + } + @TestMetadata("getter.kt") public void testGetter() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/mayBeConstant/getter.kt"); doTest(fileName); } + @TestMetadata("getterWithInitializer.kt") + public void testGetterWithInitializer() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/mayBeConstant/getterWithInitializer.kt"); + doTest(fileName); + } + @TestMetadata("inClass.kt") public void testInClass() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/mayBeConstant/inClass.kt");