Fix initialization order

* put inheritance code in the beginning
 * put top-level initializer after any declaration
This commit is contained in:
Roman Artemev
2018-07-24 18:53:44 +03:00
committed by Roman Artemev
parent cff066f702
commit 0c6256d003
11 changed files with 69 additions and 41 deletions
@@ -18,5 +18,6 @@ package org.jetbrains.kotlin.js.backend.ast
class JsClassModel(val name: JsName, val superName: JsName?) {
val interfaces: MutableSet<JsName> = mutableSetOf()
val preDeclarationBlock = JsGlobalBlock()
val postDeclarationBlock = JsGlobalBlock()
}
@@ -3616,6 +3616,11 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest {
runTest("js/js.translator/testData/box/inheritance/overrideAnyMethods.kt");
}
@TestMetadata("prototypeOrder.kt")
public void testPrototypeOrder() throws Exception {
runTest("js/js.translator/testData/box/inheritance/prototypeOrder.kt");
}
@TestMetadata("valOverride.kt")
public void testValOverride() throws Exception {
runTest("js/js.translator/testData/box/inheritance/valOverride.kt");
@@ -3616,6 +3616,11 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest {
runTest("js/js.translator/testData/box/inheritance/overrideAnyMethods.kt");
}
@TestMetadata("prototypeOrder.kt")
public void testPrototypeOrder() throws Exception {
runTest("js/js.translator/testData/box/inheritance/prototypeOrder.kt");
}
@TestMetadata("valOverride.kt")
public void testValOverride() throws Exception {
runTest("js/js.translator/testData/box/inheritance/valOverride.kt");
@@ -0,0 +1,14 @@
// EXPECTED_REACHABLE_NODES: 1117
package foo
class C: B()
open class B: A()
open class A
fun box(): String {
val c = C()
if (c !is A) return "FAIL"
return "OK"
}