Might be 'const': fix false positive in object literal #KT-23756 Fixed
This commit is contained in:
committed by
Mikhail Glukhikh
parent
84d71e5a8c
commit
da92c844a6
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.psi.KtObjectDeclaration
|
|||||||
import org.jetbrains.kotlin.psi.KtProperty
|
import org.jetbrains.kotlin.psi.KtProperty
|
||||||
import org.jetbrains.kotlin.psi.propertyVisitor
|
import org.jetbrains.kotlin.psi.propertyVisitor
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
|
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.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.constants.ErrorValue
|
import org.jetbrains.kotlin.resolve.constants.ErrorValue
|
||||||
import org.jetbrains.kotlin.resolve.constants.NullValue
|
import org.jetbrains.kotlin.resolve.constants.NullValue
|
||||||
@@ -62,7 +63,9 @@ class MayBeConstantInspection : AbstractKotlinInspection() {
|
|||||||
) {
|
) {
|
||||||
return NONE
|
return NONE
|
||||||
}
|
}
|
||||||
|
val containingClassOrObject = this.containingClassOrObject
|
||||||
if (!isTopLevel && containingClassOrObject !is KtObjectDeclaration) return NONE
|
if (!isTopLevel && containingClassOrObject !is KtObjectDeclaration) return NONE
|
||||||
|
if (containingClassOrObject?.isObjectLiteral() == true) return NONE
|
||||||
|
|
||||||
val initializer = initializer
|
val initializer = initializer
|
||||||
// For some reason constant evaluation does not work for property.analyze()
|
// 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
|
||||||
|
}
|
||||||
+5
@@ -2327,6 +2327,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest {
|
|||||||
runTest("idea/testData/inspectionsLocal/mayBeConstant/object.kt");
|
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")
|
@TestMetadata("override.kt")
|
||||||
public void testOverride() throws Exception {
|
public void testOverride() throws Exception {
|
||||||
runTest("idea/testData/inspectionsLocal/mayBeConstant/override.kt");
|
runTest("idea/testData/inspectionsLocal/mayBeConstant/override.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user