[JS IR] Add TypeScript export tests for enum class

^KT-37916 fixed
^KT-44494 fixed
This commit is contained in:
Ilya Goncharov
2021-10-21 19:17:49 +03:00
committed by Space
parent cd1296309f
commit 817e3dc306
4 changed files with 65 additions and 0 deletions
@@ -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<foo.TestEnumClass>;
static valueOf(value: string): foo.TestEnumClass;
}
namespace TestEnumClass {
class Nested {
constructor();
readonly prop: string;
}
}
}
}
@@ -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"
}
}
@@ -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";
}
@@ -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";
}