[JS IR] Fix IrGetClass for Throwable successors

- add test
This commit is contained in:
Roman Artemev
2019-11-26 23:52:50 +03:00
committed by romanart
parent 757ddd9179
commit 4759c16428
4 changed files with 24 additions and 1 deletions
@@ -42,7 +42,6 @@ class ClassReferenceLowering(val context: JsIrBackendContext) : FileLoweringPass
IrType::isDouble to "doubleClass",
IrType::isArray to "arrayClass",
IrType::isString to "stringClass",
IrType::isThrowable to "throwableClass",
IrType::isBooleanArray to "booleanArrayClass",
IrType::isCharArray to "charArrayClass",
IrType::isByteArray to "byteArrayClass",
@@ -60,6 +59,7 @@ class ClassReferenceLowering(val context: JsIrBackendContext) : FileLoweringPass
mapOf(
IrType::isAny to "anyClass",
IrType::isNumber to "numberClass",
IrType::isThrowable to "throwableClass",
IrType::isNothing to "nothingClass"
).mapValues {
primitiveClassProperty(it.value)
@@ -6698,6 +6698,11 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("js/js.translator/testData/box/reflection"), Pattern.compile("^([^_](.+))\\.kt$"), TargetBackend.JS_IR, true);
}
@TestMetadata("classJsName.kt")
public void testClassJsName() throws Exception {
runTest("js/js.translator/testData/box/reflection/classJsName.kt");
}
@TestMetadata("external.kt")
public void testExternal() throws Exception {
runTest("js/js.translator/testData/box/reflection/external.kt");
@@ -6728,6 +6728,11 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("js/js.translator/testData/box/reflection"), Pattern.compile("^([^_](.+))\\.kt$"), TargetBackend.JS, true);
}
@TestMetadata("classJsName.kt")
public void testClassJsName() throws Exception {
runTest("js/js.translator/testData/box/reflection/classJsName.kt");
}
@TestMetadata("external.kt")
public void testExternal() throws Exception {
runTest("js/js.translator/testData/box/reflection/external.kt");
+13
View File
@@ -0,0 +1,13 @@
// EXPECTED_REACHABLE_NODES: 1282
fun Throwable.className() = this::class.simpleName!!
class O : Error()
class K : Error()
fun box(): String {
val o = O()
val k = K()
return o.className() + k.className()
}