package com.intellij.codeInspection.tests.java
import com.intellij.jvm.analysis.internal.testFramework.ObsoleteApiUsageInspectionTestBase
import com.intellij.jvm.analysis.testFramework.JvmLanguage
class JavaObsoleteApiUsageInspectionTest : ObsoleteApiUsageInspectionTestBase() {
fun `test direct usage`() {
myFixture.testHighlighting(JvmLanguage.JAVA, """
class B {
void f(A a) {
a.f();
}
}
""".trimIndent())
}
fun `test override`() {
myFixture.testHighlighting(JvmLanguage.JAVA, """
class C extends A {
void f() {}
}
@org.jetbrains.annotations.ApiStatus.Obsolete
class D extends A {
void f() {}
}
""".trimIndent())
}
fun `test generic reference`() {
myFixture.addClass("@org.jetbrains.annotations.ApiStatus.Obsolete interface I {}")
myFixture.testHighlighting(JvmLanguage.JAVA, """
class U {
void u(I i) {}
}
""".trimIndent())
}
fun `test method reference`() {
myFixture.addClass("import org.jetbrains.annotations.ApiStatus;\n" +
"\n" +
"@ApiStatus.Obsolete\n" +
"@FunctionalInterface\n" +
"public interface MyFn {\n" +
"\tvoid consumer(int x);\n" +
"}\n")
myFixture.addClass("import org.jetbrains.annotations.ApiStatus;\n" +
"\n" +
"public class MyClass {\n" +
" @ApiStatus.Obsolete\n" +
" public MyClass(int x) {}\n" +
"}")
myFixture.testHighlighting(JvmLanguage.JAVA, """class Use {
void test(MyFn fn) {
fn.consumer(1);
}
void use2() {
test(StringBuilder::new);
test(new StringBuilder()::append);
test(MyClass::new);
test(x -> new MyClass(x));
test(capacity -> new StringBuilder(capacity));
}
}""".trimIndent())
}
}