From b50bfaf071c7e9a42e903f617c9e19d62e9e2929 Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Tue, 13 Dec 2016 18:05:11 +0300 Subject: [PATCH] JS: add test to prove that KT-14419 is not more reproducible. Add test to prove that extension delegate with extension getValue is translated correctly. --- .../extensionDelegatesWithSameNames.kt | 14 ++++++++ .../extensionPropertyAndExtensionGetValue.kt | 13 ++++++++ .../extensionDelegatesWithSameNames.txt | 33 +++++++++++++++++++ .../extensionPropertyAndExtensionGetValue.txt | 26 +++++++++++++++ .../ir/IrBlackBoxCodegenTestGenerated.java | 12 +++++++ .../codegen/BlackBoxCodegenTestGenerated.java | 12 +++++++ ...LightAnalysisModeCodegenTestGenerated.java | 12 +++++++ .../semantics/JsCodegenBoxTestGenerated.java | 12 +++++++ 8 files changed, 134 insertions(+) create mode 100644 compiler/testData/codegen/box/delegatedProperty/extensionDelegatesWithSameNames.kt create mode 100644 compiler/testData/codegen/box/delegatedProperty/extensionPropertyAndExtensionGetValue.kt create mode 100644 compiler/testData/codegen/light-analysis/delegatedProperty/extensionDelegatesWithSameNames.txt create mode 100644 compiler/testData/codegen/light-analysis/delegatedProperty/extensionPropertyAndExtensionGetValue.txt diff --git a/compiler/testData/codegen/box/delegatedProperty/extensionDelegatesWithSameNames.kt b/compiler/testData/codegen/box/delegatedProperty/extensionDelegatesWithSameNames.kt new file mode 100644 index 00000000000..ec5f37c0536 --- /dev/null +++ b/compiler/testData/codegen/box/delegatedProperty/extensionDelegatesWithSameNames.kt @@ -0,0 +1,14 @@ +open class C + +object O : C() + +object K : C() + +class D(val value: String) { + operator fun getValue(thisRef: C, property: Any): String = value +} + +val O.prop by D("O") +val K.prop by D("K") + +fun box() = O.prop + K.prop diff --git a/compiler/testData/codegen/box/delegatedProperty/extensionPropertyAndExtensionGetValue.kt b/compiler/testData/codegen/box/delegatedProperty/extensionPropertyAndExtensionGetValue.kt new file mode 100644 index 00000000000..1e796085d97 --- /dev/null +++ b/compiler/testData/codegen/box/delegatedProperty/extensionPropertyAndExtensionGetValue.kt @@ -0,0 +1,13 @@ +class A(val o: String) + +interface I { + val k: String +} + +inline operator fun A.getValue(thisRef: I, property: Any): String = o + thisRef.k + +class B(override val k: String) : I + +val B.prop by A("O") + +fun box() = B("K").prop \ No newline at end of file diff --git a/compiler/testData/codegen/light-analysis/delegatedProperty/extensionDelegatesWithSameNames.txt b/compiler/testData/codegen/light-analysis/delegatedProperty/extensionDelegatesWithSameNames.txt new file mode 100644 index 00000000000..70cca21fc92 --- /dev/null +++ b/compiler/testData/codegen/light-analysis/delegatedProperty/extensionDelegatesWithSameNames.txt @@ -0,0 +1,33 @@ +public class C { + public method (): void +} + + +public final class D { + private final @org.jetbrains.annotations.NotNull field value: java.lang.String + public method (@org.jetbrains.annotations.NotNull p0: java.lang.String): void + public final @org.jetbrains.annotations.NotNull method getValue(): java.lang.String + public final @org.jetbrains.annotations.NotNull method getValue(@org.jetbrains.annotations.NotNull p0: C, @org.jetbrains.annotations.NotNull p1: java.lang.Object): java.lang.String +} + + +public final class ExtensionDelegatesWithSameNamesKt { + private synthetic final static field $$delegatedProperties: kotlin.reflect.KProperty[] + private final static @org.jetbrains.annotations.NotNull field prop$delegate$1: D + private final static @org.jetbrains.annotations.NotNull field prop$delegate: D + public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String + public final static @org.jetbrains.annotations.NotNull method getProp(@org.jetbrains.annotations.NotNull p0: K): java.lang.String + public final static @org.jetbrains.annotations.NotNull method getProp(@org.jetbrains.annotations.NotNull p0: O): java.lang.String +} + + +public final class K { + public final static field INSTANCE: K + private method (): void +} + + +public final class O { + public final static field INSTANCE: O + private method (): void +} diff --git a/compiler/testData/codegen/light-analysis/delegatedProperty/extensionPropertyAndExtensionGetValue.txt b/compiler/testData/codegen/light-analysis/delegatedProperty/extensionPropertyAndExtensionGetValue.txt new file mode 100644 index 00000000000..117749914ba --- /dev/null +++ b/compiler/testData/codegen/light-analysis/delegatedProperty/extensionPropertyAndExtensionGetValue.txt @@ -0,0 +1,26 @@ +public final class A { + private final @org.jetbrains.annotations.NotNull field o: java.lang.String + public method (@org.jetbrains.annotations.NotNull p0: java.lang.String): void + public final @org.jetbrains.annotations.NotNull method getO(): java.lang.String +} + + +public final class B { + private final @org.jetbrains.annotations.NotNull field k: java.lang.String + public method (@org.jetbrains.annotations.NotNull p0: java.lang.String): void + public @org.jetbrains.annotations.NotNull method getK(): java.lang.String +} + + +public final class ExtensionPropertyAndExtensionGetValueKt { + private synthetic final static field $$delegatedProperties: kotlin.reflect.KProperty[] + private final static @org.jetbrains.annotations.NotNull field prop$delegate: A + public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String + public final static @org.jetbrains.annotations.NotNull method getProp(@org.jetbrains.annotations.NotNull p0: B): java.lang.String + public final static @org.jetbrains.annotations.NotNull method getValue(@org.jetbrains.annotations.NotNull p0: A, @org.jetbrains.annotations.NotNull p1: I, @org.jetbrains.annotations.NotNull p2: java.lang.Object): java.lang.String +} + + +public interface I { + public abstract @org.jetbrains.annotations.NotNull method getK(): java.lang.String +} 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 e822b89f7a3..0b34093800c 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 @@ -5768,6 +5768,18 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes doTest(fileName); } + @TestMetadata("extensionDelegatesWithSameNames.kt") + public void testExtensionDelegatesWithSameNames() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegatedProperty/extensionDelegatesWithSameNames.kt"); + doTest(fileName); + } + + @TestMetadata("extensionPropertyAndExtensionGetValue.kt") + public void testExtensionPropertyAndExtensionGetValue() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegatedProperty/extensionPropertyAndExtensionGetValue.kt"); + doTest(fileName); + } + @TestMetadata("genericDelegate.kt") public void testGenericDelegate() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegatedProperty/genericDelegate.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index d768a3eb983..672c3d54265 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -5768,6 +5768,18 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest(fileName); } + @TestMetadata("extensionDelegatesWithSameNames.kt") + public void testExtensionDelegatesWithSameNames() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegatedProperty/extensionDelegatesWithSameNames.kt"); + doTest(fileName); + } + + @TestMetadata("extensionPropertyAndExtensionGetValue.kt") + public void testExtensionPropertyAndExtensionGetValue() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegatedProperty/extensionPropertyAndExtensionGetValue.kt"); + doTest(fileName); + } + @TestMetadata("genericDelegate.kt") public void testGenericDelegate() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegatedProperty/genericDelegate.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeCodegenTestGenerated.java index fbf5ce38e04..c68f5f23732 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeCodegenTestGenerated.java @@ -5768,6 +5768,18 @@ public class LightAnalysisModeCodegenTestGenerated extends AbstractLightAnalysis doTest(fileName); } + @TestMetadata("extensionDelegatesWithSameNames.kt") + public void testExtensionDelegatesWithSameNames() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegatedProperty/extensionDelegatesWithSameNames.kt"); + doTest(fileName); + } + + @TestMetadata("extensionPropertyAndExtensionGetValue.kt") + public void testExtensionPropertyAndExtensionGetValue() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegatedProperty/extensionPropertyAndExtensionGetValue.kt"); + doTest(fileName); + } + @TestMetadata("genericDelegate.kt") public void testGenericDelegate() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegatedProperty/genericDelegate.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 cbd281a9eb5..c95e1040e55 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 @@ -6639,6 +6639,18 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { doTest(fileName); } + @TestMetadata("extensionDelegatesWithSameNames.kt") + public void testExtensionDelegatesWithSameNames() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegatedProperty/extensionDelegatesWithSameNames.kt"); + doTest(fileName); + } + + @TestMetadata("extensionPropertyAndExtensionGetValue.kt") + public void testExtensionPropertyAndExtensionGetValue() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegatedProperty/extensionPropertyAndExtensionGetValue.kt"); + doTest(fileName); + } + @TestMetadata("genericDelegate.kt") public void testGenericDelegate() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegatedProperty/genericDelegate.kt");