diff --git a/js/js.translator/testData/typescript-export/declarations/declarations.d.ts b/js/js.translator/testData/typescript-export/declarations/declarations.d.ts index a3ce464c315..0325e6eb5ae 100644 --- a/js/js.translator/testData/typescript-export/declarations/declarations.d.ts +++ b/js/js.translator/testData/typescript-export/declarations/declarations.d.ts @@ -98,5 +98,22 @@ declare namespace JS_TESTS { readonly prop: string; } } + class TestEnumClass { + private constructor(); + readonly constructorParameter: string; + static readonly A: foo.TestEnumClass; + static readonly B: foo.TestEnumClass; + readonly foo: number; + bar(value: string): string; + bay(): string; + static values(): Array; + static valueOf(value: string): foo.TestEnumClass; + } + namespace TestEnumClass { + class Nested { + constructor(); + readonly prop: string; + } + } } } diff --git a/js/js.translator/testData/typescript-export/declarations/declarations.kt b/js/js.translator/testData/typescript-export/declarations/declarations.kt index 4e99a14adb7..12ec2eda338 100644 --- a/js/js.translator/testData/typescript-export/declarations/declarations.kt +++ b/js/js.translator/testData/typescript-export/declarations/declarations.kt @@ -163,4 +163,20 @@ data class TestDataClass(val name: String) { class Nested { val prop: String = "hello" } +} + +@JsExport +enum class TestEnumClass(val constructorParameter: String) { + A("aConstructorParameter"), + B("bConstructorParameter"); + + val foo = ordinal + + fun bar(value: String) = value + + fun bay() = name + + class Nested { + val prop: String = "hello2" + } } \ No newline at end of file diff --git a/js/js.translator/testData/typescript-export/declarations/declarations__main.js b/js/js.translator/testData/typescript-export/declarations/declarations__main.js index ddd572d2ee9..9c978af6d3b 100644 --- a/js/js.translator/testData/typescript-export/declarations/declarations__main.js +++ b/js/js.translator/testData/typescript-export/declarations/declarations__main.js @@ -26,6 +26,7 @@ var KT_37829 = JS_TESTS.foo.KT_37829; var TestSealed = JS_TESTS.foo.TestSealed; var TestAbstract = JS_TESTS.foo.TestAbstract; var TestDataClass = JS_TESTS.foo.TestDataClass; +var TestEnumClass = JS_TESTS.foo.TestEnumClass; function assert(condition) { if (!condition) { throw "Assertion failed"; @@ -94,5 +95,18 @@ function box() { assert(new TestAbstract.BB().name == "BB"); assert(new TestAbstract.BB().baz() == "baz"); assert(new TestDataClass.Nested().prop == "hello"); + assert(TestEnumClass.A.foo == 0); + assert(TestEnumClass.B.foo == 1); + assert(TestEnumClass.A.bar("aBar") == "aBar"); + assert(TestEnumClass.B.bar("bBar") == "bBar"); + assert(TestEnumClass.A.bay() == "A"); + assert(TestEnumClass.B.bay() == "B"); + assert(TestEnumClass.A.constructorParameter == "aConstructorParameter"); + assert(TestEnumClass.B.constructorParameter == "bConstructorParameter"); + assert(TestEnumClass.valueOf("A") === TestEnumClass.A); + assert(TestEnumClass.valueOf("B") === TestEnumClass.B); + assert(TestEnumClass.values().indexOf(TestEnumClass.A) != -1); + assert(TestEnumClass.values().indexOf(TestEnumClass.B) != -1); + assert(new TestEnumClass.Nested().prop == "hello2"); return "OK"; } diff --git a/js/js.translator/testData/typescript-export/declarations/declarations__main.ts b/js/js.translator/testData/typescript-export/declarations/declarations__main.ts index 0b6713d542a..abd89cf8616 100644 --- a/js/js.translator/testData/typescript-export/declarations/declarations__main.ts +++ b/js/js.translator/testData/typescript-export/declarations/declarations__main.ts @@ -26,6 +26,7 @@ import KT_37829 = JS_TESTS.foo.KT_37829; import TestSealed = JS_TESTS.foo.TestSealed; import TestAbstract = JS_TESTS.foo.TestAbstract; import TestDataClass = JS_TESTS.foo.TestDataClass; +import TestEnumClass = JS_TESTS.foo.TestEnumClass; function assert(condition: boolean) { if (!condition) { @@ -110,5 +111,22 @@ function box(): string { assert(new TestDataClass.Nested().prop == "hello"); + assert(TestEnumClass.A.foo == 0) + assert(TestEnumClass.B.foo == 1) + assert(TestEnumClass.A.bar("aBar") == "aBar") + assert(TestEnumClass.B.bar("bBar") == "bBar") + assert(TestEnumClass.A.bay() == "A") + assert(TestEnumClass.B.bay() == "B") + assert(TestEnumClass.A.constructorParameter == "aConstructorParameter") + assert(TestEnumClass.B.constructorParameter == "bConstructorParameter") + + assert(TestEnumClass.valueOf("A") === TestEnumClass.A) + assert(TestEnumClass.valueOf("B") === TestEnumClass.B) + + assert(TestEnumClass.values().indexOf(TestEnumClass.A) != -1) + assert(TestEnumClass.values().indexOf(TestEnumClass.B) != -1) + + assert(new TestEnumClass.Nested().prop == "hello2") + return "OK"; } \ No newline at end of file