diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/MayBeConstantInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/MayBeConstantInspection.kt index 6525360df55..954bcf8fc74 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/MayBeConstantInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/MayBeConstantInspection.kt @@ -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() diff --git a/idea/testData/inspectionsLocal/mayBeConstant/objectLiteral.kt b/idea/testData/inspectionsLocal/mayBeConstant/objectLiteral.kt new file mode 100644 index 00000000000..6099bbf537f --- /dev/null +++ b/idea/testData/inspectionsLocal/mayBeConstant/objectLiteral.kt @@ -0,0 +1,7 @@ +// PROBLEM: none + +interface Foo + +val foo = object : Foo { + val x = 1 +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java index e816cabda9e..ca59ffaf2d4 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -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");