From d29f3fc3c5f8f9c04fb5f7c0237b9d3aa68f731f Mon Sep 17 00:00:00 2001 From: Mikhail Zarechenskiy Date: Thu, 7 Jun 2018 16:22:00 +0300 Subject: [PATCH] Add test to check work of inline classes with callable references --- .../callableReferencesWithInlineClasses.kt | 18 ++++++++++++++++++ .../ir/IrBlackBoxCodegenTestGenerated.java | 5 +++++ .../codegen/BlackBoxCodegenTestGenerated.java | 5 +++++ .../LightAnalysisModeTestGenerated.java | 5 +++++ .../semantics/JsCodegenBoxTestGenerated.java | 5 +++++ 5 files changed, 38 insertions(+) create mode 100644 compiler/testData/codegen/box/inlineClasses/callableReferencesWithInlineClasses.kt diff --git a/compiler/testData/codegen/box/inlineClasses/callableReferencesWithInlineClasses.kt b/compiler/testData/codegen/box/inlineClasses/callableReferencesWithInlineClasses.kt new file mode 100644 index 00000000000..e3e9744f98a --- /dev/null +++ b/compiler/testData/codegen/box/inlineClasses/callableReferencesWithInlineClasses.kt @@ -0,0 +1,18 @@ +// !LANGUAGE: +InlineClasses +// WITH_REFLECT + +inline class Foo(val x: String) { + fun bar(f: Foo, i: Int): Foo = Foo(x + f.x + i) +} + +fun box(): String { + val f = Foo("original") + val function1 = f::bar + val result1 = function1.invoke(Foo("+argument+"), 42) + if (result1.x != "original+argument+42") return "Fail first" + + val result2 = Foo::bar.invoke(Foo("explicit"), Foo("+argument2+"), 10) + if (result2.x != "explicit+argument2+10") return "Fail second" + + return "OK" +} diff --git a/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index 8cde6b9aedb..f2dd2def78f 100644 --- a/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -11174,6 +11174,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/inlineClasses/callComputablePropertyInsideInlineClass.kt"); } + @TestMetadata("callableReferencesWithInlineClasses.kt") + public void testCallableReferencesWithInlineClasses() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/callableReferencesWithInlineClasses.kt"); + } + @TestMetadata("checkBoxUnboxOfArgumentsOnInlinedFunctions.kt") public void testCheckBoxUnboxOfArgumentsOnInlinedFunctions() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/checkBoxUnboxOfArgumentsOnInlinedFunctions.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index dfbf5b2a941..47edebd3d66 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -11174,6 +11174,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/inlineClasses/callComputablePropertyInsideInlineClass.kt"); } + @TestMetadata("callableReferencesWithInlineClasses.kt") + public void testCallableReferencesWithInlineClasses() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/callableReferencesWithInlineClasses.kt"); + } + @TestMetadata("checkBoxUnboxOfArgumentsOnInlinedFunctions.kt") public void testCheckBoxUnboxOfArgumentsOnInlinedFunctions() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/checkBoxUnboxOfArgumentsOnInlinedFunctions.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 70340a42e7f..db052ceec7b 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -11174,6 +11174,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/inlineClasses/callComputablePropertyInsideInlineClass.kt"); } + @TestMetadata("callableReferencesWithInlineClasses.kt") + public void testCallableReferencesWithInlineClasses() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/callableReferencesWithInlineClasses.kt"); + } + @TestMetadata("checkBoxUnboxOfArgumentsOnInlinedFunctions.kt") public void testCheckBoxUnboxOfArgumentsOnInlinedFunctions() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/checkBoxUnboxOfArgumentsOnInlinedFunctions.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index decce745430..32c67d8adbe 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -9710,6 +9710,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/inlineClasses/callComputablePropertyInsideInlineClass.kt"); } + @TestMetadata("callableReferencesWithInlineClasses.kt") + public void testCallableReferencesWithInlineClasses() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/callableReferencesWithInlineClasses.kt"); + } + @TestMetadata("checkBoxUnboxOfArgumentsOnInlinedFunctions.kt") public void testCheckBoxUnboxOfArgumentsOnInlinedFunctions() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/checkBoxUnboxOfArgumentsOnInlinedFunctions.kt");