JVM: Only produce inline SAM wrappers in public inline scope
This commit is contained in:
committed by
Alexander Udalov
parent
50bbf4f269
commit
c9b0cc5b32
@@ -0,0 +1,10 @@
|
||||
// KOTLIN_CONFIGURATION_FLAGS: SAM_CONVERSIONS=CLASS
|
||||
// WITH_SIGNATURES
|
||||
package test
|
||||
|
||||
// SAM adapters inside of private inline functions don't need to be public,
|
||||
// since we do not refer to them from other packages.
|
||||
fun test() {
|
||||
val lambda = { }
|
||||
1.apply { Runnable(lambda) }
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
@kotlin.Metadata
|
||||
synthetic final class<null> test/PrivateInlineSamAdapterKt$sam$java_lang_Runnable$0 {
|
||||
// source: 'privateInlineSamAdapter.kt'
|
||||
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
|
||||
public synthetic final <null> method run(): void
|
||||
enclosing method test/PrivateInlineSamAdapterKt.test()V
|
||||
private synthetic final field <null> function: kotlin.jvm.functions.Function0
|
||||
inner (anonymous) class test/PrivateInlineSamAdapterKt$sam$java_lang_Runnable$0
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
final class<Lkotlin/jvm/internal/Lambda;Lkotlin/jvm/functions/Function0<Lkotlin/Unit;>;> test/PrivateInlineSamAdapterKt$test$lambda$1 {
|
||||
// source: 'privateInlineSamAdapter.kt'
|
||||
static <null> method <clinit>(): void
|
||||
<null> method <init>(): void
|
||||
public synthetic bridge <null> method invoke(): java.lang.Object
|
||||
public final <null> method invoke(): void
|
||||
enclosing method test/PrivateInlineSamAdapterKt.test()V
|
||||
public final static field <null> INSTANCE: test.PrivateInlineSamAdapterKt$test$lambda$1
|
||||
inner (anonymous) class test/PrivateInlineSamAdapterKt$test$lambda$1
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class<null> test/PrivateInlineSamAdapterKt {
|
||||
// source: 'privateInlineSamAdapter.kt'
|
||||
public final static <null> method test(): void
|
||||
inner (anonymous) class test/PrivateInlineSamAdapterKt$test$lambda$1
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
@kotlin.Metadata
|
||||
synthetic final class<null> test/PrivateInlineSamAdapterKt$sam$java_lang_Runnable$0 {
|
||||
// source: 'privateInlineSamAdapter.kt'
|
||||
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
|
||||
public synthetic final <null> method run(): void
|
||||
enclosing class test/PrivateInlineSamAdapterKt
|
||||
private synthetic final field <null> function: kotlin.jvm.functions.Function0
|
||||
inner (anonymous) class test/PrivateInlineSamAdapterKt$sam$java_lang_Runnable$0
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
final class<Lkotlin/jvm/internal/Lambda;Lkotlin/jvm/functions/Function0<Lkotlin/Unit;>;> test/PrivateInlineSamAdapterKt$test$lambda$1 {
|
||||
// source: 'privateInlineSamAdapter.kt'
|
||||
static <null> method <clinit>(): void
|
||||
<null> method <init>(): void
|
||||
public synthetic bridge <null> method invoke(): java.lang.Object
|
||||
public final <null> method invoke(): void
|
||||
enclosing method test/PrivateInlineSamAdapterKt.test()V
|
||||
public final static field <null> INSTANCE: test.PrivateInlineSamAdapterKt$test$lambda$1
|
||||
inner (anonymous) class test/PrivateInlineSamAdapterKt$test$lambda$1
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class<null> test/PrivateInlineSamAdapterKt {
|
||||
// source: 'privateInlineSamAdapter.kt'
|
||||
public final static <null> method test(): void
|
||||
inner (anonymous) class test/PrivateInlineSamAdapterKt$sam$java_lang_Runnable$0
|
||||
inner (anonymous) class test/PrivateInlineSamAdapterKt$test$lambda$1
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
// KOTLIN_CONFIGURATION_FLAGS: SAM_CONVERSIONS=CLASS
|
||||
// WITH_SIGNATURES
|
||||
package test
|
||||
|
||||
// We used to generate SAM adapters inside of inline lambdas as
|
||||
// inline SAM wrappers (`...$sam$i$...`). This is unnecessary, unless
|
||||
// the code is itself contained in an inline function.
|
||||
fun test() {
|
||||
val lambda = { }
|
||||
1.apply { Runnable(lambda) }
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
@kotlin.Metadata
|
||||
synthetic final class<null> test/SamAdapterInInlineLambdaKt$sam$java_lang_Runnable$0 {
|
||||
// source: 'samAdapterInInlineLambda.kt'
|
||||
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
|
||||
public synthetic final <null> method run(): void
|
||||
enclosing method test/SamAdapterInInlineLambdaKt.test()V
|
||||
private synthetic final field <null> function: kotlin.jvm.functions.Function0
|
||||
inner (anonymous) class test/SamAdapterInInlineLambdaKt$sam$java_lang_Runnable$0
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
final class<Lkotlin/jvm/internal/Lambda;Lkotlin/jvm/functions/Function0<Lkotlin/Unit;>;> test/SamAdapterInInlineLambdaKt$test$lambda$1 {
|
||||
// source: 'samAdapterInInlineLambda.kt'
|
||||
static <null> method <clinit>(): void
|
||||
<null> method <init>(): void
|
||||
public synthetic bridge <null> method invoke(): java.lang.Object
|
||||
public final <null> method invoke(): void
|
||||
enclosing method test/SamAdapterInInlineLambdaKt.test()V
|
||||
public final static field <null> INSTANCE: test.SamAdapterInInlineLambdaKt$test$lambda$1
|
||||
inner (anonymous) class test/SamAdapterInInlineLambdaKt$test$lambda$1
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class<null> test/SamAdapterInInlineLambdaKt {
|
||||
// source: 'samAdapterInInlineLambda.kt'
|
||||
public final static <null> method test(): void
|
||||
inner (anonymous) class test/SamAdapterInInlineLambdaKt$test$lambda$1
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
@kotlin.Metadata
|
||||
synthetic final class<null> test/SamAdapterInInlineLambdaKt$sam$java_lang_Runnable$0 {
|
||||
// source: 'samAdapterInInlineLambda.kt'
|
||||
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
|
||||
public synthetic final <null> method run(): void
|
||||
enclosing class test/SamAdapterInInlineLambdaKt
|
||||
private synthetic final field <null> function: kotlin.jvm.functions.Function0
|
||||
inner (anonymous) class test/SamAdapterInInlineLambdaKt$sam$java_lang_Runnable$0
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
final class<Lkotlin/jvm/internal/Lambda;Lkotlin/jvm/functions/Function0<Lkotlin/Unit;>;> test/SamAdapterInInlineLambdaKt$test$lambda$1 {
|
||||
// source: 'samAdapterInInlineLambda.kt'
|
||||
static <null> method <clinit>(): void
|
||||
<null> method <init>(): void
|
||||
public synthetic bridge <null> method invoke(): java.lang.Object
|
||||
public final <null> method invoke(): void
|
||||
enclosing method test/SamAdapterInInlineLambdaKt.test()V
|
||||
public final static field <null> INSTANCE: test.SamAdapterInInlineLambdaKt$test$lambda$1
|
||||
inner (anonymous) class test/SamAdapterInInlineLambdaKt$test$lambda$1
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class<null> test/SamAdapterInInlineLambdaKt {
|
||||
// source: 'samAdapterInInlineLambda.kt'
|
||||
public final static <null> method test(): void
|
||||
inner (anonymous) class test/SamAdapterInInlineLambdaKt$sam$java_lang_Runnable$0
|
||||
inner (anonymous) class test/SamAdapterInInlineLambdaKt$test$lambda$1
|
||||
}
|
||||
Reference in New Issue
Block a user