From ec1d42e92bb2d169ad343d08988a50c40f7dd149 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steven=20Sch=C3=A4fer?= Date: Wed, 28 Oct 2020 13:18:13 +0100 Subject: [PATCH] JVM IR: Generate SAM wrapper classes as non-synthetic --- .../ir/FirBytecodeTextTestGenerated.java | 5 ++++ .../ir/declarations/IrDeclarationOrigin.kt | 2 +- .../sam/samWrapperSyntheticFlags.kt | 23 +++++++++++++++++++ .../codegen/BytecodeTextTestGenerated.java | 5 ++++ .../ir/IrBytecodeTextTestGenerated.java | 5 ++++ 5 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/codegen/bytecodeText/sam/samWrapperSyntheticFlags.kt diff --git a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBytecodeTextTestGenerated.java b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBytecodeTextTestGenerated.java index 920fa9cc1f4..1554b74bb1e 100644 --- a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBytecodeTextTestGenerated.java +++ b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBytecodeTextTestGenerated.java @@ -4338,6 +4338,11 @@ public class FirBytecodeTextTestGenerated extends AbstractFirBytecodeTextTest { public void testSamWrapperOfReference() throws Exception { runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperOfReference.kt"); } + + @TestMetadata("samWrapperSyntheticFlags.kt") + public void testSamWrapperSyntheticFlags() throws Exception { + runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperSyntheticFlags.kt"); + } } @TestMetadata("compiler/testData/codegen/bytecodeText/statements") diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin.kt index 1ad9553b99c..019a779a5d3 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin.kt @@ -68,7 +68,7 @@ interface IrDeclarationOrigin { object ADAPTER_FOR_SUSPEND_CONVERSION : IrDeclarationOriginImpl("ADAPTER_FOR_SUSPEND_CONVERSION") object ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION : IrDeclarationOriginImpl("ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION") - object GENERATED_SAM_IMPLEMENTATION : IrDeclarationOriginImpl("GENERATED_SAM_IMPLEMENTATION", isSynthetic = true) + object GENERATED_SAM_IMPLEMENTATION : IrDeclarationOriginImpl("GENERATED_SAM_IMPLEMENTATION") val isSynthetic: Boolean get() = false } diff --git a/compiler/testData/codegen/bytecodeText/sam/samWrapperSyntheticFlags.kt b/compiler/testData/codegen/bytecodeText/sam/samWrapperSyntheticFlags.kt new file mode 100644 index 00000000000..0e511aa2cea --- /dev/null +++ b/compiler/testData/codegen/bytecodeText/sam/samWrapperSyntheticFlags.kt @@ -0,0 +1,23 @@ +// FILE: J.java + +public class J { + public static void g(Runnable r) { + r.run(); + } +} + +// FILE: test.kt + +fun nonInlineFun() { + val f = {} + J.g(f) +} + +inline fun inlineFun() { + val f = {} + J.g(f) +} + +// 1 final class TestKt\$sam\$java_lang_Runnable\$0 implements java/lang/Runnable +// 0 public final class TestKt\$sam\$java_lang_Runnable\$0 implements java/lang/Runnable +// 1 public final class TestKt\$sam\$i\$java_lang_Runnable\$0 implements java/lang/Runnable \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java index 7a5cb39f472..f1976cc0f8b 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java @@ -4410,6 +4410,11 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest { public void testSamWrapperOfReference() throws Exception { runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperOfReference.kt"); } + + @TestMetadata("samWrapperSyntheticFlags.kt") + public void testSamWrapperSyntheticFlags() throws Exception { + runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperSyntheticFlags.kt"); + } } @TestMetadata("compiler/testData/codegen/bytecodeText/statements") diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeTextTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeTextTestGenerated.java index 9ccedc51394..bb531ea877b 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeTextTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeTextTestGenerated.java @@ -4338,6 +4338,11 @@ public class IrBytecodeTextTestGenerated extends AbstractIrBytecodeTextTest { public void testSamWrapperOfReference() throws Exception { runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperOfReference.kt"); } + + @TestMetadata("samWrapperSyntheticFlags.kt") + public void testSamWrapperSyntheticFlags() throws Exception { + runTest("compiler/testData/codegen/bytecodeText/sam/samWrapperSyntheticFlags.kt"); + } } @TestMetadata("compiler/testData/codegen/bytecodeText/statements")