Support JvmPackageName with JvmMultifileClass

This is an internal feature of our standard library needed to compile
new API for unsigned types
This commit is contained in:
Alexander Udalov
2019-02-28 19:36:40 +01:00
parent ea21cda4df
commit 59fda8d7ce
26 changed files with 1164 additions and 210 deletions
@@ -0,0 +1,41 @@
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// FILE: A1.kt
@file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
@file:JvmPackageName("baz.foo.quux.bar")
@file:JvmName("Facade")
@file:JvmMultifileClass
package foo.bar
val g: S? get() = f().substring(0, 0) + "K"
// FILE: A2.kt
@file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
@file:JvmPackageName("baz.foo.quux.bar")
@file:JvmName("Facade")
@file:JvmMultifileClass
package foo.bar
inline fun <T> i(block: () -> T): T = block()
// FILE: A3.kt
@file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
@file:JvmPackageName("baz.foo.quux.bar")
@file:JvmName("Facade")
@file:JvmMultifileClass
package foo.bar
typealias S = String
fun f(): String = "O"
// FILE: B.kt
import foo.bar.*
fun box(): S = i { f() + g }
@@ -0,0 +1,25 @@
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// FILE: A.kt
@file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
@file:JvmPackageName("baz.foo.quux.bar")
@file:JvmName("Facade")
@file:JvmMultifileClass
package foo.bar
typealias S = String
fun f(): String = "O"
val g: S? get() = f().substring(0, 0) + "K"
inline fun <T> i(block: () -> T): T = block()
// FILE: B.kt
import foo.bar.*
fun box(): S = i { f() + g }
@@ -1,11 +1,5 @@
// !DIAGNOSTICS: -INVISIBLE_MEMBER -INVISIBLE_REFERENCE
// FILE: a.kt
<!JVM_PACKAGE_NAME_NOT_SUPPORTED_IN_MULTIFILE_CLASSES!>@file:JvmPackageName("a")<!>
@file:JvmMultifileClass
package a
fun a() {}
// FILE: b.kt
<!JVM_PACKAGE_NAME_CANNOT_BE_EMPTY!>@file:JvmPackageName("")<!>
package b
@@ -1,9 +1,5 @@
package
package a {
public fun a(): kotlin.Unit
}
package b {
public fun b(): kotlin.Unit
}
@@ -0,0 +1,7 @@
@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
@file:JvmPackageName("j1")
@file:JvmName("K1")
@file:JvmMultifileClass
package k1
fun f1() {}
@@ -0,0 +1,7 @@
@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
@file:JvmPackageName("j1")
@file:JvmName("K1")
@file:JvmMultifileClass
package k1
val v2 = Unit
@@ -0,0 +1,7 @@
@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
@file:JvmPackageName("j1")
@file:JvmName("K1")
@file:JvmMultifileClass
package k1
typealias T3 = List<String>
@@ -0,0 +1,7 @@
@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
@file:JvmPackageName("j2")
@file:JvmName("K2")
@file:JvmMultifileClass
package k2
fun f1() {}
@@ -0,0 +1,7 @@
@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
@file:JvmPackageName("j3")
@file:JvmName("K2")
@file:JvmMultifileClass
package k2
val v2 = Unit
@@ -0,0 +1,5 @@
@file:JvmName("K2")
@file:JvmMultifileClass
package k2
typealias T3 = List<String>
@@ -0,0 +1,8 @@
k1
j1/K1__K1_AKt (j1/K1)
j1/K1__K1_BKt (j1/K1)
j1/K1__K1_CKt (j1/K1)
k2
k2/K2__K2_CKt (k2/K2)
j2/K2__K2_AKt (j2/K2)
j3/K2__K2_BKt (j3/K2)