diff --git a/idea/src/org/jetbrains/jet/codegen/ClassCodegen.java b/idea/src/org/jetbrains/jet/codegen/ClassCodegen.java index 0347ac9a5a8..7a5e725d04d 100644 --- a/idea/src/org/jetbrains/jet/codegen/ClassCodegen.java +++ b/idea/src/org/jetbrains/jet/codegen/ClassCodegen.java @@ -192,8 +192,16 @@ public class ClassCodegen { frameMap.enter(parameter, argTypes[i].getSize()); } + List specifiers = aClass.getDelegationSpecifiers(); + + if (specifiers.isEmpty() || !(specifiers.get(0) instanceof JetDelegatorToSuperCall)) { + String superClass = getSuperClass(aClass, kind); + iv.load(0, Type.getType("L" + superClass + ";")); + iv.invokespecial(superClass, "", method.getDescriptor()); + } + int n = 0; - for (JetDelegationSpecifier specifier : aClass.getDelegationSpecifiers()) { + for (JetDelegationSpecifier specifier : specifiers) { boolean instanceOnStack = pushDelegateInstance(specifier, kind, codegen, iv, n); if (instanceOnStack) { JetType superType = bindingContext.resolveTypeReference(specifier.getTypeReference());