Introduce VariableDescriptorForObject interface

Add implementations
Use this interface instead of CLASS_OBJECT_DECLARATION key in BindingContext
This commit is contained in:
Pavel V. Talanov
2013-07-03 16:39:54 +04:00
committed by Alexander Udalov
parent dc5bc1488c
commit a57f74c278
16 changed files with 209 additions and 98 deletions
@@ -1639,12 +1639,10 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
assert descriptor != null;
if (descriptor instanceof VariableDescriptor) {
VariableDescriptor variableDescriptor = (VariableDescriptor) descriptor;
ClassDescriptor objectClassDescriptor = getBindingContext().get(BindingContext.OBJECT_DECLARATION_CLASS, variableDescriptor);
if (objectClassDescriptor != null) {
return genObjectClassInstance(variableDescriptor, objectClassDescriptor);
}
if (descriptor instanceof VariableDescriptorForObject) {
VariableDescriptorForObject variableDescriptor = (VariableDescriptorForObject) descriptor;
ClassDescriptor objectClassDescriptor = variableDescriptor.getObjectClass();
return genObjectClassInstance(variableDescriptor, objectClassDescriptor);
}
int index = lookupLocalIndex(descriptor);