diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 989a6d7f181..e7120107d33 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -8,23 +8,10 @@ - - - - - + + - - - - - - - - - - - + @@ -202,7 +189,7 @@ - + @@ -257,19 +244,19 @@ - + - + - - + + - + @@ -278,17 +265,10 @@ - - - - - - - - - - - + + + + @@ -296,7 +276,7 @@ - + @@ -323,7 +303,25 @@ - + + + + + + + + + + + + + + + + + + + @@ -338,15 +336,6 @@ - - - - - - - - - @@ -368,7 +357,6 @@ @@ -505,6 +494,24 @@ @@ -1052,29 +1063,6 @@ - - - - - - - - - - - - - - - - - - - - - - - @@ -1098,13 +1086,6 @@ - - - - - - - @@ -1128,8 +1109,10 @@ - - + + + + @@ -1140,13 +1123,6 @@ - - - - - - - @@ -1156,14 +1132,49 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java b/translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java index 650f15154e1..ce847210669 100644 --- a/translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java +++ b/translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java @@ -3,6 +3,7 @@ package org.jetbrains.k2js.translate.initializer; import com.google.dart.compiler.backend.js.ast.*; import com.google.dart.compiler.util.AstUtil; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.PropertyDescriptor; import org.jetbrains.jet.lang.psi.JetClass; import org.jetbrains.jet.lang.psi.JetDelegationSpecifier; @@ -39,7 +40,7 @@ public final class ClassInitializerTranslator extends AbstractInitializerTransla //NOTE: that while we translate constructor parameters we also add property initializer statements // for properties declared as constructor parameters result.setParameters(translatePrimaryConstructorParameters()); - addCallToSuperMethod(); + mayBeAddCallToSuperMethod(); result.setBody(generateInitializerMethodBody()); return result; } @@ -50,22 +51,27 @@ public final class ClassInitializerTranslator extends AbstractInitializerTransla return AstUtil.newBlock(initializerStatements); } - private void addCallToSuperMethod() { + private void mayBeAddCallToSuperMethod() { if (BindingUtils.hasAncestorClass(context().bindingContext(), classDeclaration)) { - JsName superMethodName = initializerMethodScope.declareName(Namer.SUPER_METHOD_NAME); - List arguments = translateArguments(); - initializerStatements.add(AstUtil.convertToStatement - (AstUtil.newInvocation(AstUtil.thisQualifiedReference(superMethodName), arguments))); + JetDelegatorToSuperCall superCall = getSuperCall(); + if (superCall == null) return; + addCallToSuperMethod(superCall); } } - @NotNull - private List translateArguments() { - JetDelegatorToSuperCall superCall = getSuperCall(); - return TranslationUtils.translateArgumentList(superCall.getValueArguments(), context()); + private void addCallToSuperMethod(@NotNull JetDelegatorToSuperCall superCall) { + JsName superMethodName = initializerMethodScope.declareName(Namer.SUPER_METHOD_NAME); + List arguments = translateArguments(superCall); + initializerStatements.add(AstUtil.convertToStatement + (AstUtil.newInvocation(AstUtil.thisQualifiedReference(superMethodName), arguments))); } @NotNull + private List translateArguments(@NotNull JetDelegatorToSuperCall superCall) { + return TranslationUtils.translateArgumentList(superCall.getValueArguments(), context()); + } + + @Nullable private JetDelegatorToSuperCall getSuperCall() { JetDelegatorToSuperCall result = null; for (JetDelegationSpecifier specifier : classDeclaration.getDelegationSpecifiers()) { @@ -73,7 +79,7 @@ public final class ClassInitializerTranslator extends AbstractInitializerTransla result = (JetDelegatorToSuperCall) specifier; } } - assert result != null : "Class must call ancestor's constructor."; + //assert result != null : "Class must call ancestor's constructor."; return result; } diff --git a/translator/testFiles/sortedTests/obscure/inheritedMethod.jet b/translator/testFiles/examples/cases/inheritedMethod.jet similarity index 100% rename from translator/testFiles/sortedTests/obscure/inheritedMethod.jet rename to translator/testFiles/examples/cases/inheritedMethod.jet diff --git a/translator/testFiles/sortedTests/failed/simpleBox.jet b/translator/testFiles/sortedTests/unsupported/simpleBox.jet similarity index 100% rename from translator/testFiles/sortedTests/failed/simpleBox.jet rename to translator/testFiles/sortedTests/unsupported/simpleBox.jet