diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantCompanionReferenceInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantCompanionReferenceInspection.kt index 0a7aa47fd98..3b88750e41f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantCompanionReferenceInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantCompanionReferenceInspection.kt @@ -31,7 +31,6 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassNotAny import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperInterfaces import org.jetbrains.kotlin.resolve.scopes.utils.findFunction import org.jetbrains.kotlin.resolve.scopes.utils.findVariable -import org.jetbrains.kotlin.types.typeUtil.isUnit import org.jetbrains.kotlin.types.typeUtil.makeNotNullable class RedundantCompanionReferenceInspection : AbstractKotlinInspection() { @@ -72,16 +71,9 @@ class RedundantCompanionReferenceInspection : AbstractKotlinInspection() { val type = selectorDescriptor.type val javaGetter = containingClassDescriptor.findMemberFunction( Name.identifier(JvmAbi.getterName(name.asString())) - ) as? JavaMethodDescriptor + )?.takeIf { f -> f is JavaMethodDescriptor || f.overriddenDescriptors.any { it is JavaMethodDescriptor } } if (javaGetter?.valueParameters?.isEmpty() == true && javaGetter.returnType?.makeNotNullable() == type) return false - val javaSetter = containingClassDescriptor.findMemberFunction( - Name.identifier(JvmAbi.setterName(name.asString())) - ) as? JavaMethodDescriptor - if (javaSetter?.valueParameters?.singleOrNull()?.type?.makeNotNullable() == type - && javaSetter.returnType?.makeNotNullable()?.isUnit() == true - ) return false - val variable = reference.getResolutionScope().findVariable(name, NoLookupLocation.FROM_IDE) if (variable != null && variable.isLocalOrExtension(containingClassDescriptor)) return false } diff --git a/idea/testData/inspectionsLocal/redundantCompanionReference/javaFakeSetter.1.java b/idea/testData/inspectionsLocal/redundantCompanionReference/javaFakeSetter.1.java deleted file mode 100644 index 5439cfeaa1b..00000000000 --- a/idea/testData/inspectionsLocal/redundantCompanionReference/javaFakeSetter.1.java +++ /dev/null @@ -1,5 +0,0 @@ -public class Bar { - public String setBar(String bar) { - return "" - } -} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/redundantCompanionReference/javaFakeSetter.1.java.after b/idea/testData/inspectionsLocal/redundantCompanionReference/javaFakeSetter.1.java.after deleted file mode 100644 index 5439cfeaa1b..00000000000 --- a/idea/testData/inspectionsLocal/redundantCompanionReference/javaFakeSetter.1.java.after +++ /dev/null @@ -1,5 +0,0 @@ -public class Bar { - public String setBar(String bar) { - return "" - } -} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/redundantCompanionReference/javaGetter2.1.java b/idea/testData/inspectionsLocal/redundantCompanionReference/javaGetter2.1.java new file mode 100644 index 00000000000..625a083e396 --- /dev/null +++ b/idea/testData/inspectionsLocal/redundantCompanionReference/javaGetter2.1.java @@ -0,0 +1,5 @@ +public class Bar { + public String getBar() { + return ""; + } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/redundantCompanionReference/javaGetter2.kt b/idea/testData/inspectionsLocal/redundantCompanionReference/javaGetter2.kt new file mode 100644 index 00000000000..8ab03e7f7fd --- /dev/null +++ b/idea/testData/inspectionsLocal/redundantCompanionReference/javaGetter2.kt @@ -0,0 +1,11 @@ +// PROBLEM: none + +class Foo : Bar() { + override fun getBar(): String { + return Companion.bar + } + + companion object { + val bar: String = "bar" + } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/redundantCompanionReference/javaSetter.1.java b/idea/testData/inspectionsLocal/redundantCompanionReference/javaSetter.1.java index 4a245d31d57..23abd700f1a 100644 --- a/idea/testData/inspectionsLocal/redundantCompanionReference/javaSetter.1.java +++ b/idea/testData/inspectionsLocal/redundantCompanionReference/javaSetter.1.java @@ -1,4 +1,8 @@ public class Bar { + public String getBar() { + return ""; + } + public void setBar(String bar) { } } \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/redundantCompanionReference/javaSetterWithoutGetter.1.java b/idea/testData/inspectionsLocal/redundantCompanionReference/javaSetterWithoutGetter.1.java new file mode 100644 index 00000000000..4a245d31d57 --- /dev/null +++ b/idea/testData/inspectionsLocal/redundantCompanionReference/javaSetterWithoutGetter.1.java @@ -0,0 +1,4 @@ +public class Bar { + public void setBar(String bar) { + } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/redundantCompanionReference/javaSetterWithoutGetter.1.java.after b/idea/testData/inspectionsLocal/redundantCompanionReference/javaSetterWithoutGetter.1.java.after new file mode 100644 index 00000000000..4a245d31d57 --- /dev/null +++ b/idea/testData/inspectionsLocal/redundantCompanionReference/javaSetterWithoutGetter.1.java.after @@ -0,0 +1,4 @@ +public class Bar { + public void setBar(String bar) { + } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/redundantCompanionReference/javaFakeSetter.kt b/idea/testData/inspectionsLocal/redundantCompanionReference/javaSetterWithoutGetter.kt similarity index 100% rename from idea/testData/inspectionsLocal/redundantCompanionReference/javaFakeSetter.kt rename to idea/testData/inspectionsLocal/redundantCompanionReference/javaSetterWithoutGetter.kt diff --git a/idea/testData/inspectionsLocal/redundantCompanionReference/javaFakeSetter.kt.after b/idea/testData/inspectionsLocal/redundantCompanionReference/javaSetterWithoutGetter.kt.after similarity index 100% rename from idea/testData/inspectionsLocal/redundantCompanionReference/javaFakeSetter.kt.after rename to idea/testData/inspectionsLocal/redundantCompanionReference/javaSetterWithoutGetter.kt.after diff --git a/idea/testData/inspectionsLocal/redundantCompanionReference/kotlinGetter.kt b/idea/testData/inspectionsLocal/redundantCompanionReference/kotlinGetter.kt new file mode 100644 index 00000000000..42d41ccf7f4 --- /dev/null +++ b/idea/testData/inspectionsLocal/redundantCompanionReference/kotlinGetter.kt @@ -0,0 +1,9 @@ +class Foo { + fun getBar(): String { + return Companion.bar + } + + companion object { + val bar: String = "bar" + } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/redundantCompanionReference/kotlinGetter.kt.after b/idea/testData/inspectionsLocal/redundantCompanionReference/kotlinGetter.kt.after new file mode 100644 index 00000000000..cfd416d2ede --- /dev/null +++ b/idea/testData/inspectionsLocal/redundantCompanionReference/kotlinGetter.kt.after @@ -0,0 +1,9 @@ +class Foo { + fun getBar(): String { + return bar + } + + companion object { + val bar: String = "bar" + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java index 97d1abf5f89..3f3fafcbab3 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -6758,21 +6758,31 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest { runTest("idea/testData/inspectionsLocal/redundantCompanionReference/javaFakeGetter.kt"); } - @TestMetadata("javaFakeSetter.kt") - public void testJavaFakeSetter() throws Exception { - runTest("idea/testData/inspectionsLocal/redundantCompanionReference/javaFakeSetter.kt"); - } - @TestMetadata("javaGetter.kt") public void testJavaGetter() throws Exception { runTest("idea/testData/inspectionsLocal/redundantCompanionReference/javaGetter.kt"); } + @TestMetadata("javaGetter2.kt") + public void testJavaGetter2() throws Exception { + runTest("idea/testData/inspectionsLocal/redundantCompanionReference/javaGetter2.kt"); + } + @TestMetadata("javaSetter.kt") public void testJavaSetter() throws Exception { runTest("idea/testData/inspectionsLocal/redundantCompanionReference/javaSetter.kt"); } + @TestMetadata("javaSetterWithoutGetter.kt") + public void testJavaSetterWithoutGetter() throws Exception { + runTest("idea/testData/inspectionsLocal/redundantCompanionReference/javaSetterWithoutGetter.kt"); + } + + @TestMetadata("kotlinGetter.kt") + public void testKotlinGetter() throws Exception { + runTest("idea/testData/inspectionsLocal/redundantCompanionReference/kotlinGetter.kt"); + } + @TestMetadata("methodArgument.kt") public void testMethodArgument() throws Exception { runTest("idea/testData/inspectionsLocal/redundantCompanionReference/methodArgument.kt");