From af34bf9a7c62b098cb3204fdc20c1dcec45f8549 Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Thu, 28 Apr 2011 20:57:44 +0400 Subject: [PATCH] Generate call to super even if not explisit. --- idea/src/org/jetbrains/jet/codegen/ClassCodegen.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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()); -- GitLab