c357967c2c
Introduce MetadataSource as a way to store the original descriptor for any element (before any lowerings) and maintain it until the end of the codegen where it's used in generating the metadata. Note that JVM signatures written to the metadata are formed from the _resulting_ generated elements, not by mapping the original descriptors. Some corner cases are not supported yet, namely properties declared in companion objects, synthetic methods for property annotations, JvmPackageName, etc. #KT-29119 Fixed
53 lines
1.3 KiB
Kotlin
Vendored
53 lines
1.3 KiB
Kotlin
Vendored
// TARGET_BACKEND: JVM
|
|
|
|
// WITH_REFLECT
|
|
// FILE: I.java
|
|
|
|
public class I {
|
|
public static void publicStaticI() {}
|
|
public void publicMemberI() {}
|
|
private static void privateStaticI() {}
|
|
private void privateMemberI() {}
|
|
}
|
|
|
|
// FILE: J.java
|
|
|
|
public class J extends I {
|
|
public static void publicStaticJ() {}
|
|
public void publicMemberJ() {}
|
|
private static void privateStaticJ() {}
|
|
private void privateMemberJ() {}
|
|
}
|
|
|
|
// FILE: K.kt
|
|
|
|
import kotlin.reflect.full.declaredMembers
|
|
import kotlin.test.assertEquals
|
|
|
|
open class K : J() {
|
|
open fun publicKFun() {}
|
|
private fun privateKFun() {}
|
|
var publicKProp = Unit
|
|
private val privateKProp = Unit
|
|
}
|
|
|
|
class L : K() {
|
|
fun publicLFun() {}
|
|
private fun privateLFun() {}
|
|
val publicLProp = Unit
|
|
private var privateLProp = Unit
|
|
}
|
|
|
|
inline fun <reified T> test(vararg names: String) {
|
|
assertEquals(names.toSet(), T::class.declaredMembers.map { it.name }.toSet())
|
|
}
|
|
|
|
fun box(): String {
|
|
test<I>("publicStaticI", "publicMemberI", "privateStaticI", "privateMemberI")
|
|
test<J>("publicStaticJ", "publicMemberJ", "privateStaticJ", "privateMemberJ")
|
|
test<K>("publicKFun", "privateKFun", "publicKProp", "privateKProp")
|
|
test<L>("publicLFun", "privateLFun", "publicLProp", "privateLProp")
|
|
|
|
return "OK"
|
|
}
|