diff --git a/plugins/kotlin/analysis/src/org/jetbrains/kotlin/idea/java/UnimplementedKotlinInterfaceMemberAnnotator.kt b/plugins/kotlin/analysis/src/org/jetbrains/kotlin/idea/java/UnimplementedKotlinInterfaceMemberAnnotator.kt index 29e53cd26e6e..85c06ffc8672 100644 --- a/plugins/kotlin/analysis/src/org/jetbrains/kotlin/idea/java/UnimplementedKotlinInterfaceMemberAnnotator.kt +++ b/plugins/kotlin/analysis/src/org/jetbrains/kotlin/idea/java/UnimplementedKotlinInterfaceMemberAnnotator.kt @@ -41,12 +41,14 @@ class UnimplementedKotlinInterfaceMemberAnnotator : Annotator { findUnimplementedMethod(element)?.let { report(it, holder, element) } - } private fun findUnimplementedMethod(psiClass: PsiClass): KtLightMethod? { val signaturesFromKotlinInterfaces = psiClass.visibleSignatures.filter { signature -> - signature.method.let { it is KtLightMethod && it.hasModifierProperty(PsiModifier.DEFAULT) } + val method = signature.method + method is KtLightMethod && + method.hasModifierProperty(PsiModifier.DEFAULT) && + !method.hasModifierProperty(PsiModifier.STATIC) }.ifEmpty { return null } val kotlinSuperClass = generateSequence(psiClass) { it.superClass }.firstOrNull { it is KtLightClassForSourceDeclaration } diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/checkers/JavaAgainstKotlinBinariesCheckerTestGenerated.java b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/checkers/JavaAgainstKotlinBinariesCheckerTestGenerated.java index 782c0d0f3d02..dc0b556d2b59 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/checkers/JavaAgainstKotlinBinariesCheckerTestGenerated.java +++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/checkers/JavaAgainstKotlinBinariesCheckerTestGenerated.java @@ -73,6 +73,11 @@ public class JavaAgainstKotlinBinariesCheckerTestGenerated extends AbstractJavaA runTest("testData/kotlinAndJavaChecker/javaAgainstKotlin/ExtendClassWithJvmDefaultImplementation.kt"); } + @TestMetadata("ExtendInterfaceWithAJvmStaticMethodInCompanion.kt") + public void testExtendInterfaceWithAJvmStaticMethodInCompanion() throws Exception { + runTest("testData/kotlinAndJavaChecker/javaAgainstKotlin/ExtendInterfaceWithAJvmStaticMethodInCompanion.kt"); + } + @TestMetadata("ExtendInterfaceWithDefaultMethodAndCompatibilityAll.kt") public void testExtendInterfaceWithDefaultMethodAndCompatibilityAll() throws Exception { runTest("testData/kotlinAndJavaChecker/javaAgainstKotlin/ExtendInterfaceWithDefaultMethodAndCompatibilityAll.kt"); diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerTestGenerated.java b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerTestGenerated.java index 88b865b1f5fc..935b93215039 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerTestGenerated.java +++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerTestGenerated.java @@ -75,6 +75,11 @@ public abstract class JavaAgainstKotlinSourceCheckerTestGenerated extends Abstra runTest("testData/kotlinAndJavaChecker/javaAgainstKotlin/ExtendClassWithJvmDefaultImplementation.kt"); } + @TestMetadata("ExtendInterfaceWithAJvmStaticMethodInCompanion.kt") + public void testExtendInterfaceWithAJvmStaticMethodInCompanion() throws Exception { + runTest("testData/kotlinAndJavaChecker/javaAgainstKotlin/ExtendInterfaceWithAJvmStaticMethodInCompanion.kt"); + } + @TestMetadata("ExtendInterfaceWithDefaultMethodAndCompatibilityAll.kt") public void testExtendInterfaceWithDefaultMethodAndCompatibilityAll() throws Exception { runTest("testData/kotlinAndJavaChecker/javaAgainstKotlin/ExtendInterfaceWithDefaultMethodAndCompatibilityAll.kt"); diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerWithoutUltraLightTestGenerated.java b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerWithoutUltraLightTestGenerated.java index 702990d606cc..927874c91414 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerWithoutUltraLightTestGenerated.java +++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerWithoutUltraLightTestGenerated.java @@ -75,6 +75,11 @@ public abstract class JavaAgainstKotlinSourceCheckerWithoutUltraLightTestGenerat runTest("testData/kotlinAndJavaChecker/javaAgainstKotlin/ExtendClassWithJvmDefaultImplementation.kt"); } + @TestMetadata("ExtendInterfaceWithAJvmStaticMethodInCompanion.kt") + public void testExtendInterfaceWithAJvmStaticMethodInCompanion() throws Exception { + runTest("testData/kotlinAndJavaChecker/javaAgainstKotlin/ExtendInterfaceWithAJvmStaticMethodInCompanion.kt"); + } + @TestMetadata("ExtendInterfaceWithDefaultMethodAndCompatibilityAll.kt") public void testExtendInterfaceWithDefaultMethodAndCompatibilityAll() throws Exception { runTest("testData/kotlinAndJavaChecker/javaAgainstKotlin/ExtendInterfaceWithDefaultMethodAndCompatibilityAll.kt"); diff --git a/plugins/kotlin/idea/tests/testData/kotlinAndJavaChecker/javaAgainstKotlin/ExtendInterfaceWithAJvmStaticMethodInCompanion.java b/plugins/kotlin/idea/tests/testData/kotlinAndJavaChecker/javaAgainstKotlin/ExtendInterfaceWithAJvmStaticMethodInCompanion.java new file mode 100644 index 000000000000..1f76f185593e --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/kotlinAndJavaChecker/javaAgainstKotlin/ExtendInterfaceWithAJvmStaticMethodInCompanion.java @@ -0,0 +1 @@ +public class ExtendInterfaceWithAJvmStaticMethodInCompanion implements KotlinWithCompanion {} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/kotlinAndJavaChecker/javaAgainstKotlin/ExtendInterfaceWithAJvmStaticMethodInCompanion.kt b/plugins/kotlin/idea/tests/testData/kotlinAndJavaChecker/javaAgainstKotlin/ExtendInterfaceWithAJvmStaticMethodInCompanion.kt new file mode 100644 index 000000000000..17ee230bd6ac --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/kotlinAndJavaChecker/javaAgainstKotlin/ExtendInterfaceWithAJvmStaticMethodInCompanion.kt @@ -0,0 +1,7 @@ +interface KotlinWithCompanion { + companion object { + @JvmStatic + val providers: String + get() = "" + } +} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/kotlinAndJavaChecker/javaAgainstKotlin/ExtendInterfaceWithAJvmStaticMethodInCompanion.txt b/plugins/kotlin/idea/tests/testData/kotlinAndJavaChecker/javaAgainstKotlin/ExtendInterfaceWithAJvmStaticMethodInCompanion.txt new file mode 100644 index 000000000000..fc3b677841d4 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/kotlinAndJavaChecker/javaAgainstKotlin/ExtendInterfaceWithAJvmStaticMethodInCompanion.txt @@ -0,0 +1 @@ +// WITH_RUNTIME \ No newline at end of file