[JS IR] Add TypeScript export tests for enum class
^KT-37916 fixed ^KT-44494 fixed
This commit is contained in:
@@ -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"
|
||||
}
|
||||
}
|
||||
+14
@@ -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";
|
||||
}
|
||||
|
||||
+18
@@ -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";
|
||||
}
|
||||
Reference in New Issue
Block a user