Make stdlib work with -Xmultifile-package-facades.
Fixed wrong owner mapping in presence of -Xmultifile-package-facades. Fixed backing field mapping issue. Added more tests.
This commit is contained in:
+3
-1
@@ -1,4 +1,6 @@
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
inline fun foo(body: () -> String): String = body()
|
||||
inline fun foo(body: () -> String): String = bar(body())
|
||||
|
||||
public fun bar(x: String): String = x
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package test
|
||||
|
||||
import a.foo
|
||||
|
||||
fun box(): String = foo { "OK" }
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
@file:[JvmName("APackage") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
inline fun foo(body: () -> String): String = zee(body())
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
@file:[JvmName("APackage") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
public fun zee(x: String): String = x
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import a.*
|
||||
|
||||
fun box(): String = OK
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
val O: String = "O"
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
val K: String = "K"
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
val OK: String = O + K
|
||||
@@ -0,0 +1,3 @@
|
||||
import a.OK
|
||||
|
||||
fun box(): String = OK
|
||||
@@ -0,0 +1,4 @@
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
val OK: String = "OK"
|
||||
@@ -0,0 +1,6 @@
|
||||
import a.OK
|
||||
|
||||
fun box(): String {
|
||||
OK = "OK"
|
||||
return OK
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
var OK: String = "Hmmm?"
|
||||
@@ -0,0 +1,2 @@
|
||||
fun box(): String =
|
||||
listOf("a").map { "OK" }.get(0)
|
||||
@@ -2,6 +2,5 @@ fun foo() {
|
||||
assert(1 == 1) { "Hahaha" }
|
||||
}
|
||||
|
||||
// assert function will be inlined, and we assure that there are no calls via package part, but is call via package facade in inlined code
|
||||
// 0 INVOKESTATIC kotlin\/KotlinPackage.+\.getASSERTIONS_ENABLED \(\)Z
|
||||
// 1 INVOKESTATIC kotlin\/AssertionsJVMKt\.getASSERTIONS_ENABLED \(\)Z
|
||||
// 1 INVOKESTATIC kotlin\/KotlinPackage\.getASSERTIONS_ENABLED
|
||||
// 0 INVOKESTATIC kotlin\/AssertionsJVMKt\.getASSERTIONS_ENABLED
|
||||
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
@file:[JvmName("Util") JvmMultifileClass]
|
||||
package test
|
||||
|
||||
public fun publicInOtherFile() {}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
@file:[JvmName("Util") JvmMultifileClass]
|
||||
package test
|
||||
|
||||
inline fun foo(body: () -> Unit) {
|
||||
publicInThisFile()
|
||||
publicInOtherFile()
|
||||
body()
|
||||
}
|
||||
|
||||
public fun publicInThisFile() {}
|
||||
|
||||
fun bar() {
|
||||
foo {}
|
||||
}
|
||||
|
||||
// @test/Util__ThisFileKt.class:
|
||||
// 2 INVOKESTATIC test/Util.publicInThisFile
|
||||
// 2 INVOKESTATIC test/Util.publicInOtherFile
|
||||
Reference in New Issue
Block a user