May be constant: fix corner case with getter & initializer

This commit is contained in:
Mikhail Glukhikh
2017-12-15 12:54:23 +03:00
parent 7358980cbc
commit 50dc9a14a6
3 changed files with 22 additions and 1 deletions
@@ -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
@@ -0,0 +1,3 @@
// PROBLEM: none
val <caret>withGetter = 42 get() = field
@@ -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");