diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index 559728500f3..2c588780a6f 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -24,6 +24,7 @@ import com.intellij.psi.tree.IElementType; import com.intellij.util.ArrayUtil; import com.intellij.util.Function; import com.intellij.util.containers.Stack; +import kotlin.KotlinPackage; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.backend.common.CodegenUtil; @@ -1442,8 +1443,10 @@ public class ExpressionCodegen extends JetVisitor implem argumentGenerator.generate(valueArguments); } - ConstructorDescriptor constructorDescriptor = bindingContext.get(CONSTRUCTOR, expression.getObjectDeclaration()); - assert constructorDescriptor != null : "Unresolved constructor: " + expression.getText(); + Collection constructors = classDescriptor.getConstructors(); + assert constructors.size() == 1 : "Unexpected number of constructors for class: " + classDescriptor + " " + constructors; + ConstructorDescriptor constructorDescriptor = KotlinPackage.single(constructors); + JvmMethodSignature constructor = typeMapper.mapSignature(constructorDescriptor); v.invokespecial(type.getInternalName(), "", constructor.getAsmMethod().getDescriptor(), false); return StackValue.onStack(type); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java index a39be939dcc..8e9db9e1baa 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java @@ -1078,8 +1078,10 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { private void generatePrimaryConstructor(final DelegationFieldsInfo delegationFieldsInfo) { if (ignoreIfTraitOrAnnotation()) return; - ConstructorDescriptor constructorDescriptor = bindingContext.get(BindingContext.CONSTRUCTOR, myClass); - assert constructorDescriptor != null : "Constructor not found for class: " + descriptor; + Collection constructors = descriptor.getConstructors(); + assert constructors.size() == 1 : "Unexpected number of constructors for class: " + descriptor + " " + constructors; + + ConstructorDescriptor constructorDescriptor = KotlinPackage.single(constructors); ConstructorContext constructorContext = context.intoConstructor(constructorDescriptor);