diff --git a/js/js.tests/test/org/jetbrains/k2js/test/semantics/ClassInheritanceTest.java b/js/js.tests/test/org/jetbrains/k2js/test/semantics/ClassInheritanceTest.java index f5001ca9c92..644778294c3 100644 --- a/js/js.tests/test/org/jetbrains/k2js/test/semantics/ClassInheritanceTest.java +++ b/js/js.tests/test/org/jetbrains/k2js/test/semantics/ClassInheritanceTest.java @@ -55,6 +55,10 @@ public final class ClassInheritanceTest extends SingleFileTranslationTest { public void testAbstractVarOverride() throws Exception { fooBoxTest(); } + + public void testKt3499() throws Exception { + fooBoxTest(); + } } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/declaration/ClassDeclarationTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/declaration/ClassDeclarationTranslator.java index 03fb98ebfb1..bd58a268a8a 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/declaration/ClassDeclarationTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/declaration/ClassDeclarationTranslator.java @@ -129,7 +129,7 @@ public final class ClassDeclarationTranslator extends AbstractTranslator { @NotNull @Override public Iterable getNeighbors(FinalListItem current) { - TLinkedList parents = new TLinkedList(); + LinkedList parents = new LinkedList(); ClassDescriptor classDescriptor = getClassDescriptor(context().bindingContext(), current.declaration); Collection superTypes = classDescriptor.getTypeConstructor().getSupertypes(); @@ -147,6 +147,8 @@ public final class ClassDeclarationTranslator extends AbstractTranslator { } }); + assert sortedOpenClasses.size() == openList.size(); + // second pass: generate Iterator it = sortedOpenClasses.descendingIterator(); while (it.hasNext()) { diff --git a/js/js.translator/testFiles/inheritance/cases/kt3499.kt b/js/js.translator/testFiles/inheritance/cases/kt3499.kt new file mode 100644 index 00000000000..2fd7f4a19a0 --- /dev/null +++ b/js/js.translator/testFiles/inheritance/cases/kt3499.kt @@ -0,0 +1,13 @@ +package foo + +trait A : B, E +trait B +open class C { + fun foo() = true +} +trait D +trait E +trait F : G, D +trait G + +fun box() = C().foo() \ No newline at end of file