mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[kotlin] fix inspection about unimplemented method from Kotlin
The problem is that such properties are compiled into the containing class (non-companion) and become static. As a result, without check for static, we though that such methods should be implemented in subclasses ^KTIJ-19052 Fixed GitOrigin-RevId: 8811026da5a1b9f678ce5a4b8968073ab06a97ab
This commit is contained in:
committed by
intellij-monorepo-bot
parent
43db6f1cf9
commit
0f896783db
+4
-2
@@ -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 }
|
||||
|
||||
+5
@@ -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");
|
||||
|
||||
+5
@@ -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");
|
||||
|
||||
+5
@@ -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");
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
public class ExtendInterfaceWithAJvmStaticMethodInCompanion implements KotlinWithCompanion {}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
interface KotlinWithCompanion {
|
||||
companion object {
|
||||
@JvmStatic
|
||||
val providers: String
|
||||
get() = ""
|
||||
}
|
||||
}
|
||||
+1
@@ -0,0 +1 @@
|
||||
// WITH_RUNTIME
|
||||
Reference in New Issue
Block a user