980b91d082
We generate @java.lang.Deprecated annotation on methods of $DefaultImpls classes in compatibility mode. This annotation has RUNTIME retention and should be visible. Also, get rid of representing annotations as Class'es (yes we know that these annotations are in compiler CLASSPATH, but we should not rely on such classes and associated information).
21 lines
613 B
Kotlin
Vendored
21 lines
613 B
Kotlin
Vendored
// !JVM_DEFAULT_MODE: compatibility
|
|
// TARGET_BACKEND: JVM
|
|
// JVM_TARGET: 1.8
|
|
// FULL_JDK
|
|
// WITH_RUNTIME
|
|
|
|
interface IFoo {
|
|
@JvmDefault
|
|
fun foo() {}
|
|
}
|
|
|
|
fun box(): String {
|
|
val iFoo = IFoo::class.java
|
|
val iFooDefaultImpls = Class.forName("${iFoo.name}\$DefaultImpls")
|
|
val fooMethod = iFooDefaultImpls.declaredMethods.find { it.name == "foo" }
|
|
?: throw AssertionError("No method 'foo' in class ${iFooDefaultImpls.name}")
|
|
fooMethod.getAnnotation(java.lang.Deprecated::class.java)
|
|
?: throw AssertionError("No java.lang.Deprecated annotation on method 'foo'")
|
|
return "OK"
|
|
}
|