Revert "Revert "Instantiation of annotations for JVM IR with the corresponding feature flag""
Fix incorrectly rebasedce0a3a57dfThis reverts commit3d0126d5
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// IGNORE_DEXING
|
||||
|
||||
// WITH_RUNTIME
|
||||
// !LANGUAGE: +InstantiationOfAnnotationClasses
|
||||
|
||||
// MODULE: lib
|
||||
// FILE: lib.kt
|
||||
|
||||
package a
|
||||
|
||||
annotation class A(val i: Int)
|
||||
|
||||
inline fun foo(i: Int): A = A(i)
|
||||
|
||||
inline fun bar(f: () -> Int): A = A(f())
|
||||
|
||||
// MODULE: app(lib)
|
||||
// FILE: app.kt
|
||||
|
||||
package test
|
||||
|
||||
import a.*
|
||||
|
||||
class C {
|
||||
fun one(): A = foo(1)
|
||||
fun two(): A = bar { 2 }
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val one = C().one()
|
||||
val two = C().two()
|
||||
assert(one.i == 1)
|
||||
assert(two.i == 2)
|
||||
// Just like SAM wrappers, annotation implementation classes should be copied from inline functions
|
||||
// into current module to avoid compatibility problems when inline fun implementation in origin module
|
||||
// has changed (e.g. do not instantiate annotation anymore)
|
||||
assert(one.javaClass.getEnclosingClass().getName() == "test.C")
|
||||
assert(two.javaClass.getEnclosingClass().getName() == "test.C")
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user