diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/defaultMethodUtil.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/defaultMethodUtil.kt index e4653049b18..f83e2d48305 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/defaultMethodUtil.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/defaultMethodUtil.kt @@ -130,7 +130,9 @@ fun expandMaskConditionsAndUpdateVariableNodes( node.instructions.insert(position, newInsn) } - node.localVariables.removeIf { it.start in toDelete && it.end in toDelete } + node.localVariables.removeIf { + (it.start in toDelete && it.end in toDelete) || defaultLambdas.contains(it.index) + } node.remove(toDelete) diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java index da2726859e0..0ede1cab971 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java @@ -9843,6 +9843,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/defaultArguments/function/covariantOverrideGeneric.kt"); } + @TestMetadata("defaultLambdaInline.kt") + public void testDefaultLambdaInline() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/function/defaultLambdaInline.kt"); + } + @TestMetadata("extensionFunctionManyArgs.kt") public void testExtensionFunctionManyArgs() throws Exception { runTest("compiler/testData/codegen/box/defaultArguments/function/extensionFunctionManyArgs.kt"); diff --git a/compiler/testData/codegen/box/coroutines/kt42554.kt b/compiler/testData/codegen/box/coroutines/kt42554.kt index 24b0dbf609c..9db7f4ff185 100644 --- a/compiler/testData/codegen/box/coroutines/kt42554.kt +++ b/compiler/testData/codegen/box/coroutines/kt42554.kt @@ -1,5 +1,14 @@ // WITH_RUNTIME +// Need to ignore dexing for now. This generates invalid inner-class attributes on the IR backend. +// +// java.lang.AssertionError: D8 dexing error: D8 dexing info: Malformed inner-class attribute: +// outerTypeInternal: C$result$1 +// innerTypeInternal: C$no_name_in_PSI_3d19d79d_1ba9_4cd0_b7f5_b46aa3cd5d40$WhenMappings +// innerName: WhenMappings +// +// IGNORE_DEXING + import kotlin.coroutines.* fun launch(block: suspend () -> String): String { diff --git a/compiler/testData/codegen/box/defaultArguments/function/defaultLambdaInline.kt b/compiler/testData/codegen/box/defaultArguments/function/defaultLambdaInline.kt new file mode 100644 index 00000000000..5ea7219d744 --- /dev/null +++ b/compiler/testData/codegen/box/defaultArguments/function/defaultLambdaInline.kt @@ -0,0 +1,7 @@ +inline fun f(getString: () -> String = { "OK" }) = getString() +inline fun g() { } + +fun box(): String { + g() + return f() +} \ No newline at end of file diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/genericLambda.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/genericLambda.kt index f425be21738..9886812a50b 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/genericLambda.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/genericLambda.kt @@ -1,6 +1,3 @@ -// Enable for dexing once we have a D8 version with a fix for -// https://issuetracker.google.com/148661132 -// IGNORE_DEXING // NO_CHECK_LAMBDA_INLINING // FILE: 1.kt package test diff --git a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleGeneric.kt b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleGeneric.kt index a12b033da38..8a5c76bffdb 100644 --- a/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleGeneric.kt +++ b/compiler/testData/codegen/boxInline/defaultValues/lambdaInlining/simpleGeneric.kt @@ -1,6 +1,3 @@ -// Enable for dexing once we have a D8 version with a fix for -// https://issuetracker.google.com/148661132 -// IGNORE_DEXING // FILE: 1.kt // SKIP_INLINE_CHECK_IN: inlineFun$default package test diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/D8Checker.java b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/D8Checker.java index c7856c4bc25..e91232a3cbd 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/D8Checker.java +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/D8Checker.java @@ -40,9 +40,27 @@ public class D8Checker { }); } + // Compilation with D8 should proceed with no output. There should be no info, warnings, or errors. + static class TestDiagnosticsHandler implements DiagnosticsHandler { + @Override + public void error(Diagnostic diagnostic) { + Assert.fail("D8 dexing error: " + diagnostic.getDiagnosticMessage()); + } + + @Override + public void warning(Diagnostic diagnostic) { + Assert.fail("D8 dexing warning: " + diagnostic.getDiagnosticMessage()); + } + + @Override + public void info(Diagnostic diagnostic) { + Assert.fail("D8 dexing info: " + diagnostic.getDiagnosticMessage()); + } + } + private static void runD8(Consumer addInput) { ProgramConsumer ignoreOutputConsumer = new DexIndexedConsumer.ForwardingConsumer(null); - D8Command.Builder builder = D8Command.builder() + D8Command.Builder builder = D8Command.builder(new TestDiagnosticsHandler()) .setMinApiLevel(28) .setMode(CompilationMode.DEBUG) .setProgramConsumer(ignoreOutputConsumer); diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index 2b539076b31..f04fc8ffa0e 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -11243,6 +11243,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/defaultArguments/function/covariantOverrideGeneric.kt"); } + @TestMetadata("defaultLambdaInline.kt") + public void testDefaultLambdaInline() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/function/defaultLambdaInline.kt"); + } + @TestMetadata("extensionFunctionManyArgs.kt") public void testExtensionFunctionManyArgs() throws Exception { runTest("compiler/testData/codegen/box/defaultArguments/function/extensionFunctionManyArgs.kt"); diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index a190e8c247f..2c3efe42faa 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -11243,6 +11243,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/defaultArguments/function/covariantOverrideGeneric.kt"); } + @TestMetadata("defaultLambdaInline.kt") + public void testDefaultLambdaInline() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/function/defaultLambdaInline.kt"); + } + @TestMetadata("extensionFunctionManyArgs.kt") public void testExtensionFunctionManyArgs() throws Exception { runTest("compiler/testData/codegen/box/defaultArguments/function/extensionFunctionManyArgs.kt"); diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index 856d146d81d..de8382c8918 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -9843,6 +9843,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/defaultArguments/function/covariantOverrideGeneric.kt"); } + @TestMetadata("defaultLambdaInline.kt") + public void testDefaultLambdaInline() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/function/defaultLambdaInline.kt"); + } + @TestMetadata("extensionFunctionManyArgs.kt") public void testExtensionFunctionManyArgs() throws Exception { runTest("compiler/testData/codegen/box/defaultArguments/function/extensionFunctionManyArgs.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java index ab656bc1582..78071508f99 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java @@ -8353,6 +8353,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes runTest("compiler/testData/codegen/box/defaultArguments/function/covariantOverrideGeneric.kt"); } + @TestMetadata("defaultLambdaInline.kt") + public void testDefaultLambdaInline() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/function/defaultLambdaInline.kt"); + } + @TestMetadata("extensionFunctionManyArgs.kt") public void testExtensionFunctionManyArgs() throws Exception { runTest("compiler/testData/codegen/box/defaultArguments/function/extensionFunctionManyArgs.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java index 191c494524a..fdac53b6054 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java @@ -8353,6 +8353,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/defaultArguments/function/covariantOverrideGeneric.kt"); } + @TestMetadata("defaultLambdaInline.kt") + public void testDefaultLambdaInline() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/function/defaultLambdaInline.kt"); + } + @TestMetadata("extensionFunctionManyArgs.kt") public void testExtensionFunctionManyArgs() throws Exception { runTest("compiler/testData/codegen/box/defaultArguments/function/extensionFunctionManyArgs.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index 82fc5e0759a..22d7d2d69cc 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -8353,6 +8353,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/defaultArguments/function/covariantOverrideGeneric.kt"); } + @TestMetadata("defaultLambdaInline.kt") + public void testDefaultLambdaInline() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/function/defaultLambdaInline.kt"); + } + @TestMetadata("extensionFunctionManyArgs.kt") public void testExtensionFunctionManyArgs() throws Exception { runTest("compiler/testData/codegen/box/defaultArguments/function/extensionFunctionManyArgs.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java index 38e97a4ec19..d7532a786f2 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java @@ -4033,6 +4033,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest runTest("compiler/testData/codegen/box/defaultArguments/function/covariantOverrideGeneric.kt"); } + @TestMetadata("defaultLambdaInline.kt") + public void testDefaultLambdaInline() throws Exception { + runTest("compiler/testData/codegen/box/defaultArguments/function/defaultLambdaInline.kt"); + } + @TestMetadata("extensionFunctionManyArgs.kt") public void testExtensionFunctionManyArgs() throws Exception { runTest("compiler/testData/codegen/box/defaultArguments/function/extensionFunctionManyArgs.kt");