From 0869eb7ef38dd34f283536eda16edc8c7a2d2dd3 Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Tue, 5 Apr 2016 15:35:39 +0300 Subject: [PATCH] KT-6201 KT-6203 KT-6326 KT-6777 Add test cases to prove that issues are no longer reproducible --- .../js/test/semantics/ClassObjectTest.java | 8 +++++ .../js/test/semantics/NestedTypesTest.java | 4 +++ .../classObject/cases/enumCompanionObject.kt | 15 ++++++++++ .../cases/objectInCompanionObject.kt | 25 ++++++++++++++++ .../cases/nestedObjectLazyInitialized.kt | 30 +++++++++++++++++++ 5 files changed, 82 insertions(+) create mode 100644 js/js.translator/testData/classObject/cases/enumCompanionObject.kt create mode 100644 js/js.translator/testData/classObject/cases/objectInCompanionObject.kt create mode 100644 js/js.translator/testData/nestedTypes/cases/nestedObjectLazyInitialized.kt diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/ClassObjectTest.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/ClassObjectTest.java index 4b0cde8ffdf..d8215aa6a25 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/ClassObjectTest.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/ClassObjectTest.java @@ -51,4 +51,12 @@ public final class ClassObjectTest extends SingleFileTranslationTest { public void testDefaultObjectSameNamesAsInOuter() throws Exception { checkFooBoxIsOk(); } + + public void testEnumCompanionObject() throws Exception { + checkFooBoxIsOk(); + } + + public void testObjectInCompanionObject() throws Exception { + checkFooBoxIsOk(); + } } 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 d43dd7240ad..d78502f318f 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 @@ -74,6 +74,10 @@ public class NestedTypesTest extends SingleFileTranslationTest { checkFooBoxIsOk(); } + public void testNestedObjectLazyInitialized() throws Exception { + checkFooBoxIsOk(); + } + @NotNull @Override protected List additionalJsFiles(@NotNull EcmaVersion ecmaVersion) { diff --git a/js/js.translator/testData/classObject/cases/enumCompanionObject.kt b/js/js.translator/testData/classObject/cases/enumCompanionObject.kt new file mode 100644 index 00000000000..78b93a85681 --- /dev/null +++ b/js/js.translator/testData/classObject/cases/enumCompanionObject.kt @@ -0,0 +1,15 @@ +// See KT-6326, KT-6777 +package foo + +enum class Foo { + A; + + companion object { + val a = A + } +} + +fun box(): String { + assertEquals("A", Foo.a.name) + return "OK" +} \ No newline at end of file diff --git a/js/js.translator/testData/classObject/cases/objectInCompanionObject.kt b/js/js.translator/testData/classObject/cases/objectInCompanionObject.kt new file mode 100644 index 00000000000..8f3457927b7 --- /dev/null +++ b/js/js.translator/testData/classObject/cases/objectInCompanionObject.kt @@ -0,0 +1,25 @@ +// See KT-6203 +package foo + +class TestClass { + object a { + override fun toString() = "a" + } + + companion object { + object b { + override fun toString() = "b" + } + } + + fun test() = convert(a) + convert(b) +} + +fun convert(o: Any) = o.toString() + +fun box(): String { + assertEquals("ab", TestClass().test()) + assertEquals("ab2", convert(TestClass.a) + convert(TestClass.Companion.b) + "2") + + return "OK" +} \ No newline at end of file diff --git a/js/js.translator/testData/nestedTypes/cases/nestedObjectLazyInitialized.kt b/js/js.translator/testData/nestedTypes/cases/nestedObjectLazyInitialized.kt new file mode 100644 index 00000000000..53e531a4489 --- /dev/null +++ b/js/js.translator/testData/nestedTypes/cases/nestedObjectLazyInitialized.kt @@ -0,0 +1,30 @@ +// See KT-6201 +package foo + +var log = "" + +class A() { + init { + log += "A" + } + + object B { + init { + log += "B" + } + + fun bar() { + log += ".bar" + } + } +} + +fun box(): String { + A() + log += ";" + A.B.bar() + + assertEquals("A;B.bar", log) + + return "OK" +} \ No newline at end of file