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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -544,6 +551,10 @@
+
+
+
+
@@ -1005,7 +1016,7 @@
-
+
@@ -1018,7 +1029,6 @@
-
@@ -1043,6 +1053,7 @@
+
@@ -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