Refine multi-file facades generation
Do not generate delegation from multi-file facade to inline-only functions because they are effectively private in bytecode #KT-10858 Fixed
This commit is contained in:
+5
-1
@@ -1,3 +1,7 @@
|
||||
import a.foo
|
||||
import a.inlineOnly
|
||||
|
||||
fun box(): String = foo { "OK" }
|
||||
fun box(): String {
|
||||
if (!a.inlineOnly<String>("OK")) return "fail 1"
|
||||
return foo { "OK" }
|
||||
}
|
||||
|
||||
+3
-1
@@ -3,4 +3,6 @@ package a
|
||||
|
||||
inline fun foo(body: () -> String): String = bar(body())
|
||||
|
||||
public fun bar(x: String): String = x
|
||||
public fun bar(x: String): String = x
|
||||
|
||||
inline fun <reified T> inlineOnly(x: Any?): Boolean = x is T
|
||||
@@ -0,0 +1,10 @@
|
||||
@file:[JvmName("Foo") JvmMultifileClass]
|
||||
package test
|
||||
|
||||
fun foo() {
|
||||
inlineOnly<String>()
|
||||
}
|
||||
|
||||
// No method should be generated in multifile facade for 'inlineOnly'
|
||||
// Because 'inlineOnly' is private in file part (because it's inline-only) and can't be delegated from facade
|
||||
public inline fun <reified T> inlineOnly() {}
|
||||
@@ -0,0 +1,12 @@
|
||||
@kotlin.Metadata
|
||||
@kotlin.jvm.internal.KotlinMultifileClass
|
||||
public final class test/Foo {
|
||||
public final static method foo(): void
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
@kotlin.jvm.internal.KotlinMultifileClassPart
|
||||
synthetic final class test/Foo__InlineOnlyMultifileKt {
|
||||
public final static method foo(): void
|
||||
private final static method inlineOnly(): void
|
||||
}
|
||||
Reference in New Issue
Block a user