From 4a078c1143242d55448942869ab35d00d7bc20b9 Mon Sep 17 00:00:00 2001 From: Michael Bogdanov Date: Wed, 8 Oct 2014 17:24:06 +0400 Subject: [PATCH] Temporary disable local fun inlining (it's not supported now) --- .../src/org/jetbrains/jet/codegen/ExpressionCodegen.java | 3 ++- .../box/functions/localFunctions/disabledInline.kt | 9 +++++++++ .../codegen/generated/BlackBoxCodegenTestGenerated.java | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/codegen/box/functions/localFunctions/disabledInline.kt diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index 857d1471935..007ddd3579e 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -2222,7 +2222,8 @@ public class ExpressionCodegen extends JetVisitor implem boolean isInline = state.isInlineEnabled() && descriptor instanceof SimpleFunctionDescriptor && ((SimpleFunctionDescriptor) descriptor).getInlineStrategy().isInline(); - if (!isInline) return defaultCallGenerator; + //TODO: support local fun inlining + if (!isInline || isLocalNamedFun(descriptor)) return defaultCallGenerator; SimpleFunctionDescriptor original = DescriptorUtils.unwrapFakeOverride((SimpleFunctionDescriptor) descriptor.getOriginal()); return new InlineCodegen(this, state, original, callElement); diff --git a/compiler/testData/codegen/box/functions/localFunctions/disabledInline.kt b/compiler/testData/codegen/box/functions/localFunctions/disabledInline.kt new file mode 100644 index 00000000000..7f45e448def --- /dev/null +++ b/compiler/testData/codegen/box/functions/localFunctions/disabledInline.kt @@ -0,0 +1,9 @@ +fun box(): String { + val s = "OK" + + [inline] fun localFun(): String { + return s + } + + return localFun() +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java index 3a8b685689d..5657c063c42 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -3493,6 +3493,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/functions/localFunctions"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("disabledInline.kt") + public void testDisabledInline() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/functions/localFunctions/disabledInline.kt"); + doTest(fileName); + } + @TestMetadata("kt2895.kt") public void testKt2895() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/functions/localFunctions/kt2895.kt");