Add Kotlin package FQ name to kotlin.Metadata

It might differ from the JVM package FQ name if the JvmPackageName
annotation is used. This will be useful for faster indexing in the IDE
and for reflection
This commit is contained in:
Alexander Udalov
2017-10-12 15:44:04 +02:00
parent 16b7bece46
commit 5f775497e2
7 changed files with 62 additions and 0 deletions
@@ -0,0 +1,28 @@
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// LANGUAGE_VERSION: 1.2
// FILE: foo.kt
@file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
@file:JvmPackageName("baz.foo.quux.bar")
package foo.bar
fun f() {}
// FILE: bar.kt
@file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
fun getPackageName(classFqName: String): String =
Class.forName(classFqName).getAnnotation(Metadata::class.java).pn
fun box(): String {
val bar = getPackageName("BarKt")
if (bar != "") return "Fail 1: $bar"
val foo = getPackageName("baz.foo.quux.bar.FooKt")
if (foo != "foo.bar") return "Fail 2: $foo"
return "OK"
}