LTDA: Don't read CONSTRUCTOR slice in backend

Usages from DECLARATIONS_TO_DESCRIPTORS are left
This commit is contained in:
Nikolay Krasko
2014-08-26 14:14:55 +04:00
parent 5657d30125
commit 261d4293ae
2 changed files with 9 additions and 4 deletions
@@ -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<StackValue, StackValue> implem
argumentGenerator.generate(valueArguments);
}
ConstructorDescriptor constructorDescriptor = bindingContext.get(CONSTRUCTOR, expression.getObjectDeclaration());
assert constructorDescriptor != null : "Unresolved constructor: " + expression.getText();
Collection<ConstructorDescriptor> 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(), "<init>", constructor.getAsmMethod().getDescriptor(), false);
return StackValue.onStack(type);
@@ -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<ConstructorDescriptor> 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);