mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
[jvm] Don't warn about overrides in future Java versions
#IDEA-385156 Fixed GitOrigin-RevId: 598ef1b8b7b1c9a8fe58849792674e0ecc9315d5
This commit is contained in:
committed by
intellij-monorepo-bot
parent
eed4b1e9d9
commit
4668554949
@@ -148,7 +148,7 @@ class JavaApiUsageInspection : AbstractBaseUastLocalInspectionTool() {
|
||||
|
||||
private fun processMethodOverriding(method: UMethod, overriddenMethods: Array<PsiMethod>) {
|
||||
val overrideAnnotation = method.findAnnotation(CommonClassNames.JAVA_LANG_OVERRIDE)
|
||||
val hasOverrideModifier = overrideModifierLanguages.any { method.sourcePsi?.language != Language.findLanguageByID(it) }
|
||||
val hasOverrideModifier = overrideModifierLanguages.contains(method.sourcePsi?.language?.id)
|
||||
if (overrideAnnotation == null && !hasOverrideModifier) return
|
||||
val sourcePsi = method.sourcePsi ?: return
|
||||
val module = ModuleUtilCore.findModuleForPsiElement(sourcePsi) ?: return
|
||||
|
||||
@@ -386,4 +386,23 @@ class JavaJavaApiUsageInspectionTest : JavaApiUsageInspectionTestBase() {
|
||||
}
|
||||
""".trimIndent())
|
||||
}
|
||||
|
||||
fun `test method that will be overridden in a future Java version`() {
|
||||
myFixture.setLanguageLevel(LanguageLevel.JDK_1_7)
|
||||
myFixture.testHighlighting(JvmLanguage.JAVA, """
|
||||
import java.util.Comparator;
|
||||
|
||||
class MyComparator implements Comparator<String> {
|
||||
@Override
|
||||
public int compare(String o1, String o2) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// this method is introduced in Java 8
|
||||
public Comparator<String> reversed() {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
""")
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,30 @@
|
||||
package com.intellij.codeInspection.tests.kotlin
|
||||
|
||||
import com.intellij.jvm.analysis.testFramework.JvmLanguage
|
||||
import com.intellij.pom.java.LanguageLevel
|
||||
import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginMode
|
||||
|
||||
class K1JavaApiUsageInspectionTest : KotlinJavaApiUsageInspectionTest() {
|
||||
override val pluginMode: KotlinPluginMode get() = KotlinPluginMode.K1
|
||||
|
||||
fun `test method that will be overridden in a future Java version`() {
|
||||
myFixture.setLanguageLevel(LanguageLevel.JDK_1_7)
|
||||
|
||||
// The reversed method declaration is erroneous because there is a missing `override`
|
||||
// In Java, such code would be fine because overrides are implicit
|
||||
myFixture.testHighlighting(JvmLanguage.KOTLIN, """
|
||||
import java.util.Comparator
|
||||
|
||||
|
||||
class MyComparator : Comparator<String> {
|
||||
override fun compare(p0: String, p1: String): Int {
|
||||
return 0
|
||||
}
|
||||
|
||||
fun <error descr="Usage of API documented as @since 1.8+"><error descr="[VIRTUAL_MEMBER_HIDDEN] 'reversed' hides member of supertype 'Comparator' and needs 'override' modifier">reversed</error></error>(): Comparator<String> {
|
||||
return this
|
||||
}
|
||||
}
|
||||
""")
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,30 @@
|
||||
package com.intellij.codeInspection.tests.kotlin
|
||||
|
||||
import com.intellij.jvm.analysis.testFramework.JvmLanguage
|
||||
import com.intellij.pom.java.LanguageLevel
|
||||
import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginMode
|
||||
|
||||
class K2JavaApiUsageInspectionTest : KotlinJavaApiUsageInspectionTest() {
|
||||
override val pluginMode: KotlinPluginMode get() = KotlinPluginMode.K2
|
||||
|
||||
fun `test method that will be overridden in a future Java version`() {
|
||||
myFixture.setLanguageLevel(LanguageLevel.JDK_1_7)
|
||||
|
||||
// The reversed method declaration is erroneous because there is a missing `override`
|
||||
// In Java, such code would be fine because overrides are implicit
|
||||
myFixture.testHighlighting(JvmLanguage.KOTLIN, """
|
||||
import java.util.Comparator
|
||||
|
||||
|
||||
class MyComparator : Comparator<String> {
|
||||
override fun compare(p0: String, p1: String): Int {
|
||||
return 0
|
||||
}
|
||||
|
||||
fun <error descr="Usage of API documented as @since 1.8+"><error descr="[VIRTUAL_MEMBER_HIDDEN] 'reversed' hides member of supertype 'Comparator' and needs an 'override' modifier.">reversed</error></error>(): Comparator<String> {
|
||||
return this
|
||||
}
|
||||
}
|
||||
""")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user