[JS IR] Export name and ordinal for enum classes

^KT-37916 fixed
^KT-44494 fixed
This commit is contained in:
Ilya Goncharov
2021-10-28 20:05:49 +03:00
committed by Space
parent a31a6c5117
commit 4fa2fa6c26
6 changed files with 42 additions and 10 deletions
@@ -74,5 +74,11 @@ function box() {
if (this["export_enum_class"].Foo.values().indexOf(this["export_enum_class"].Foo.A) === -1) return "fail20"
if (this["export_enum_class"].Foo.values().indexOf(this["export_enum_class"].Foo.B) === -1) return "fail21"
if (this["export_enum_class"].Foo.A.name !== "A") return "fail22"
if (this["export_enum_class"].Foo.B.name !== "B") return "fail23"
if (this["export_enum_class"].Foo.A.ordinal !== 0) return "fail24"
if (this["export_enum_class"].Foo.B.ordinal !== 1) return "fail23"
return "OK"
}
@@ -108,6 +108,8 @@ declare namespace JS_TESTS {
bay(): string;
static values(): Array<foo.TestEnumClass>;
static valueOf(value: string): foo.TestEnumClass;
readonly name: string;
readonly ordinal: number;
}
namespace TestEnumClass {
class Nested {
@@ -107,6 +107,10 @@ function box() {
assert(TestEnumClass.valueOf("B") === TestEnumClass.B);
assert(TestEnumClass.values().indexOf(TestEnumClass.A) != -1);
assert(TestEnumClass.values().indexOf(TestEnumClass.B) != -1);
assert(TestEnumClass.A.name === "A");
assert(TestEnumClass.B.name === "B");
assert(TestEnumClass.A.ordinal === 0);
assert(TestEnumClass.B.ordinal === 1);
assert(new TestEnumClass.Nested().prop == "hello2");
return "OK";
}
@@ -126,6 +126,11 @@ function box(): string {
assert(TestEnumClass.values().indexOf(TestEnumClass.A) != -1)
assert(TestEnumClass.values().indexOf(TestEnumClass.B) != -1)
assert(TestEnumClass.A.name === "A")
assert(TestEnumClass.B.name === "B")
assert(TestEnumClass.A.ordinal === 0)
assert(TestEnumClass.B.ordinal === 1)
assert(new TestEnumClass.Nested().prop == "hello2")
return "OK";