[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;
|
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 {
|
class Nested {
|
||||||
val prop: String = "hello"
|
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 TestSealed = JS_TESTS.foo.TestSealed;
|
||||||
var TestAbstract = JS_TESTS.foo.TestAbstract;
|
var TestAbstract = JS_TESTS.foo.TestAbstract;
|
||||||
var TestDataClass = JS_TESTS.foo.TestDataClass;
|
var TestDataClass = JS_TESTS.foo.TestDataClass;
|
||||||
|
var TestEnumClass = JS_TESTS.foo.TestEnumClass;
|
||||||
function assert(condition) {
|
function assert(condition) {
|
||||||
if (!condition) {
|
if (!condition) {
|
||||||
throw "Assertion failed";
|
throw "Assertion failed";
|
||||||
@@ -94,5 +95,18 @@ function box() {
|
|||||||
assert(new TestAbstract.BB().name == "BB");
|
assert(new TestAbstract.BB().name == "BB");
|
||||||
assert(new TestAbstract.BB().baz() == "baz");
|
assert(new TestAbstract.BB().baz() == "baz");
|
||||||
assert(new TestDataClass.Nested().prop == "hello");
|
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";
|
return "OK";
|
||||||
}
|
}
|
||||||
|
|||||||
+18
@@ -26,6 +26,7 @@ import KT_37829 = JS_TESTS.foo.KT_37829;
|
|||||||
import TestSealed = JS_TESTS.foo.TestSealed;
|
import TestSealed = JS_TESTS.foo.TestSealed;
|
||||||
import TestAbstract = JS_TESTS.foo.TestAbstract;
|
import TestAbstract = JS_TESTS.foo.TestAbstract;
|
||||||
import TestDataClass = JS_TESTS.foo.TestDataClass;
|
import TestDataClass = JS_TESTS.foo.TestDataClass;
|
||||||
|
import TestEnumClass = JS_TESTS.foo.TestEnumClass;
|
||||||
|
|
||||||
function assert(condition: boolean) {
|
function assert(condition: boolean) {
|
||||||
if (!condition) {
|
if (!condition) {
|
||||||
@@ -110,5 +111,22 @@ function box(): string {
|
|||||||
|
|
||||||
assert(new TestDataClass.Nested().prop == "hello");
|
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";
|
return "OK";
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user