From 550c8b12d19997dd0627e059231a39e3c0fd0adf Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Tue, 1 Mar 2016 16:11:44 +0300 Subject: [PATCH] KT-10667 Fix building qualified references to nested type of built-ins, e.g. Map.Entry --- .../js/test/semantics/NestedTypesTest.java | 4 ++++ .../js/translate/context/StaticContext.java | 2 +- .../cases/inheritanceFromNestedBuiltIn.kt | 16 ++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 js/js.translator/testData/nestedTypes/cases/inheritanceFromNestedBuiltIn.kt diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/NestedTypesTest.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/NestedTypesTest.java index 60f4a0b5d0f..70979226898 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/NestedTypesTest.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/NestedTypesTest.java @@ -66,6 +66,10 @@ public class NestedTypesTest extends SingleFileTranslationTest { checkFooBoxIsOk(); } + public void testInheritanceFromNestedBuiltIn() throws Exception { + checkFooBoxIsOk(); + } + @NotNull @Override protected List additionalJsFiles(@NotNull EcmaVersion ecmaVersion) { diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java index c0f10722540..5522030c57c 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java @@ -553,7 +553,7 @@ public final class StaticContext { return null; } - if (isNativeObject(descriptor) || isBuiltin(descriptor)) { + if (isNativeObject(descriptor)) { return null; } ClassDescriptor cls = (ClassDescriptor) descriptor; diff --git a/js/js.translator/testData/nestedTypes/cases/inheritanceFromNestedBuiltIn.kt b/js/js.translator/testData/nestedTypes/cases/inheritanceFromNestedBuiltIn.kt new file mode 100644 index 00000000000..02b1ddde9bc --- /dev/null +++ b/js/js.translator/testData/nestedTypes/cases/inheritanceFromNestedBuiltIn.kt @@ -0,0 +1,16 @@ +package foo + +class EntryImplementor() : Map.Entry { + override val key: String + get() = "foo" + override val value: String + get() = "bar" +} + +fun box(): String { + val entry = EntryImplementor() + var stringResult = "${entry.key}${entry.value}" + if (stringResult != "foobar") return "failed1: $stringResult" + + return "OK" +} \ No newline at end of file