diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantInnerClassModifierInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantInnerClassModifierInspection.kt index e0d46b3d0d4e..97c52dc53f50 100644 --- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantInnerClassModifierInspection.kt +++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantInnerClassModifierInspection.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.anyDescendantOfType import org.jetbrains.kotlin.psi.psiUtil.containingClass +import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.descriptorUtil.isSubclassOf @@ -61,6 +62,9 @@ class RedundantInnerClassModifierInspection : AbstractKotlinInspection() { if (reference is PsiClass && reference.parent is PsiClass) { return@anyDescendantOfType reference.getJavaClassDescriptor()?.isInner == true } + if (reference is KtObjectDeclaration || (reference as? KtDeclaration)?.containingClassOrObject is KtObjectDeclaration) { + return@anyDescendantOfType false + } val referenceContainingClass = reference?.getStrictParentOfType() if (referenceContainingClass != null) { if (referenceContainingClass == targetClass) return@anyDescendantOfType false diff --git a/plugins/kotlin/idea/tests/testData/inspectionsLocal/redundantInnerClassModifier/hasOuterClassCompanionObjectReference.kt b/plugins/kotlin/idea/tests/testData/inspectionsLocal/redundantInnerClassModifier/hasOuterClassCompanionObjectReference.kt new file mode 100644 index 000000000000..164220885acc --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/inspectionsLocal/redundantInnerClassModifier/hasOuterClassCompanionObjectReference.kt @@ -0,0 +1,9 @@ +class Test { + inner class InnerM { + val v = Test + val foo = Test.foo + } + companion object { + const val foo = 1 + } +} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/inspectionsLocal/redundantInnerClassModifier/hasOuterClassCompanionObjectReference.kt.after b/plugins/kotlin/idea/tests/testData/inspectionsLocal/redundantInnerClassModifier/hasOuterClassCompanionObjectReference.kt.after new file mode 100644 index 000000000000..47ec5f53b131 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/inspectionsLocal/redundantInnerClassModifier/hasOuterClassCompanionObjectReference.kt.after @@ -0,0 +1,9 @@ +class Test { + class InnerM { + val v = Test + val foo = Test.foo + } + companion object { + const val foo = 1 + } +} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/inspectionsLocal/redundantInnerClassModifier/hasOuterClassObjectReference.kt b/plugins/kotlin/idea/tests/testData/inspectionsLocal/redundantInnerClassModifier/hasOuterClassObjectReference.kt new file mode 100644 index 000000000000..4d31eaa4ae3a --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/inspectionsLocal/redundantInnerClassModifier/hasOuterClassObjectReference.kt @@ -0,0 +1,9 @@ +class Test { + inner class InnerM { + val o = O + val foo = O.foo + } + object O { + const val foo = 1 + } +} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/inspectionsLocal/redundantInnerClassModifier/hasOuterClassObjectReference.kt.after b/plugins/kotlin/idea/tests/testData/inspectionsLocal/redundantInnerClassModifier/hasOuterClassObjectReference.kt.after new file mode 100644 index 000000000000..0c68d1d2ac25 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/inspectionsLocal/redundantInnerClassModifier/hasOuterClassObjectReference.kt.after @@ -0,0 +1,9 @@ +class Test { + class InnerM { + val o = O + val foo = O.foo + } + object O { + const val foo = 1 + } +} \ No newline at end of file