Might be 'const': fix false positive in object literal #KT-23756 Fixed

This commit is contained in:
Toshiaki Kameyama
2018-05-01 16:08:38 +03:00
committed by Mikhail Glukhikh
parent 84d71e5a8c
commit da92c844a6
3 changed files with 15 additions and 0 deletions
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.psi.KtObjectDeclaration
import org.jetbrains.kotlin.psi.KtProperty
import org.jetbrains.kotlin.psi.propertyVisitor
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
import org.jetbrains.kotlin.psi.psiUtil.isObjectLiteral
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.constants.ErrorValue
import org.jetbrains.kotlin.resolve.constants.NullValue
@@ -62,7 +63,9 @@ class MayBeConstantInspection : AbstractKotlinInspection() {
) {
return NONE
}
val containingClassOrObject = this.containingClassOrObject
if (!isTopLevel && containingClassOrObject !is KtObjectDeclaration) return NONE
if (containingClassOrObject?.isObjectLiteral() == true) return NONE
val initializer = initializer
// For some reason constant evaluation does not work for property.analyze()
@@ -0,0 +1,7 @@
// PROBLEM: none
interface Foo
val foo = object : Foo {
val <caret>x = 1
}
@@ -2327,6 +2327,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest {
runTest("idea/testData/inspectionsLocal/mayBeConstant/object.kt");
}
@TestMetadata("objectLiteral.kt")
public void testObjectLiteral() throws Exception {
runTest("idea/testData/inspectionsLocal/mayBeConstant/objectLiteral.kt");
}
@TestMetadata("override.kt")
public void testOverride() throws Exception {
runTest("idea/testData/inspectionsLocal/mayBeConstant/override.kt");