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");
|
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")
|
@TestMetadata("samWrapperSyntheticFlags.kt")
|
||||||
public void testSamWrapperSyntheticFlags() throws Exception {
|
public void testSamWrapperSyntheticFlags() throws Exception {
|
||||||
runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperSyntheticFlags.kt");
|
runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperSyntheticFlags.kt");
|
||||||
|
|||||||
+2
-1
@@ -177,8 +177,9 @@ abstract class SingleAbstractMethodLowering(val context: CommonBackendContext) :
|
|||||||
val field = subclass.addField {
|
val field = subclass.addField {
|
||||||
name = Name.identifier(FUNCTION_FIELD_NAME)
|
name = Name.identifier(FUNCTION_FIELD_NAME)
|
||||||
type = wrappedFunctionType
|
type = wrappedFunctionType
|
||||||
origin = subclass.origin
|
origin = IrDeclarationOrigin.SYNTHETIC_GENERATED_SAM_IMPLEMENTATION
|
||||||
visibility = DescriptorVisibilities.PRIVATE
|
visibility = DescriptorVisibilities.PRIVATE
|
||||||
|
isFinal = true
|
||||||
setSourceRange(createFor)
|
setSourceRange(createFor)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ interface IrDeclarationOrigin {
|
|||||||
object ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION : IrDeclarationOriginImpl("ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION")
|
object ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION : IrDeclarationOriginImpl("ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION")
|
||||||
|
|
||||||
object GENERATED_SAM_IMPLEMENTATION : IrDeclarationOriginImpl("GENERATED_SAM_IMPLEMENTATION")
|
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
|
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");
|
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")
|
@TestMetadata("samWrapperSyntheticFlags.kt")
|
||||||
public void testSamWrapperSyntheticFlags() throws Exception {
|
public void testSamWrapperSyntheticFlags() throws Exception {
|
||||||
runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperSyntheticFlags.kt");
|
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");
|
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")
|
@TestMetadata("samWrapperSyntheticFlags.kt")
|
||||||
public void testSamWrapperSyntheticFlags() throws Exception {
|
public void testSamWrapperSyntheticFlags() throws Exception {
|
||||||
runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperSyntheticFlags.kt");
|
runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperSyntheticFlags.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user