package com.intellij.codeInspection.tests.kotlin
import com.intellij.jvm.analysis.internal.testFramework.ObsoleteApiUsageInspectionTestBase
import com.intellij.jvm.analysis.testFramework.JvmLanguage
import org.jetbrains.kotlin.idea.test.ExpectedPluginModeProvider
import org.jetbrains.kotlin.idea.test.setUpWithKotlinPlugin
abstract class KotlinObsoleteApiUsageInspectionTest : ObsoleteApiUsageInspectionTestBase(), ExpectedPluginModeProvider {
override fun setUp() {
setUpWithKotlinPlugin(testRootDisposable) { super.setUp() }
}
fun `test direct usage`() {
myFixture.testHighlighting(JvmLanguage.KOTLIN, """
class B {
fun f(a: A) {
a.f();
}
}
""".trimIndent())
}
fun `test override`() {
myFixture.testHighlighting(JvmLanguage.KOTLIN, """
class C : A() {
override fun f() { }
}
@org.jetbrains.annotations.ApiStatus.Obsolete
class D : A() {
override fun f() { }
}
""".trimIndent())
}
fun `test generic reference`() {
myFixture.addClass("@org.jetbrains.annotations.ApiStatus.Obsolete public interface I {}")
myFixture.testHighlighting(JvmLanguage.KOTLIN, """
class U {
fun u(i: I) = i
}
""".trimIndent())
}
}