JVM IR: Generate SAM wrapper fields as synthetic final
This commit is contained in:
committed by
Alexander Udalov
parent
ec1d42e92b
commit
999151abac
Generated
+5
@@ -4339,6 +4339,11 @@ public class FirBytecodeTextTestGenerated extends AbstractFirBytecodeTextTest {
|
||||
runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperOfReference.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("samWrapperPrivateFinalSyntheticField.kt")
|
||||
public void testSamWrapperPrivateFinalSyntheticField() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperPrivateFinalSyntheticField.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("samWrapperSyntheticFlags.kt")
|
||||
public void testSamWrapperSyntheticFlags() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperSyntheticFlags.kt");
|
||||
|
||||
+2
-1
@@ -177,8 +177,9 @@ abstract class SingleAbstractMethodLowering(val context: CommonBackendContext) :
|
||||
val field = subclass.addField {
|
||||
name = Name.identifier(FUNCTION_FIELD_NAME)
|
||||
type = wrappedFunctionType
|
||||
origin = subclass.origin
|
||||
origin = IrDeclarationOrigin.SYNTHETIC_GENERATED_SAM_IMPLEMENTATION
|
||||
visibility = DescriptorVisibilities.PRIVATE
|
||||
isFinal = true
|
||||
setSourceRange(createFor)
|
||||
}
|
||||
|
||||
|
||||
@@ -69,6 +69,7 @@ interface IrDeclarationOrigin {
|
||||
object ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION : IrDeclarationOriginImpl("ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION")
|
||||
|
||||
object GENERATED_SAM_IMPLEMENTATION : IrDeclarationOriginImpl("GENERATED_SAM_IMPLEMENTATION")
|
||||
object SYNTHETIC_GENERATED_SAM_IMPLEMENTATION : IrDeclarationOriginImpl("SYNTHETIC_GENERATED_SAM_IMPLEMENTATION", isSynthetic = true)
|
||||
|
||||
val isSynthetic: Boolean get() = false
|
||||
}
|
||||
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
// FILE: J.java
|
||||
|
||||
public class J {
|
||||
public static void g(Runnable r) {
|
||||
r.run();
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
|
||||
fun f() {
|
||||
val r: () -> Unit = {}
|
||||
J.g(r)
|
||||
}
|
||||
|
||||
// 1 private final synthetic Lkotlin/jvm/functions/Function0; function
|
||||
@@ -4411,6 +4411,11 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest {
|
||||
runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperOfReference.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("samWrapperPrivateFinalSyntheticField.kt")
|
||||
public void testSamWrapperPrivateFinalSyntheticField() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperPrivateFinalSyntheticField.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("samWrapperSyntheticFlags.kt")
|
||||
public void testSamWrapperSyntheticFlags() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperSyntheticFlags.kt");
|
||||
|
||||
+5
@@ -4339,6 +4339,11 @@ public class IrBytecodeTextTestGenerated extends AbstractIrBytecodeTextTest {
|
||||
runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperOfReference.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("samWrapperPrivateFinalSyntheticField.kt")
|
||||
public void testSamWrapperPrivateFinalSyntheticField() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperPrivateFinalSyntheticField.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("samWrapperSyntheticFlags.kt")
|
||||
public void testSamWrapperSyntheticFlags() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperSyntheticFlags.kt");
|
||||
|
||||
Reference in New Issue
Block a user