This commit is contained in:
Michael Bogdanov
2015-04-04 12:29:38 +03:00
parent 47c838e62b
commit a1f365d17c
@@ -1931,11 +1931,8 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
if (directToField) { if (directToField) {
receiver = StackValue.receiverWithoutReceiverArgument(receiver); receiver = StackValue.receiverWithoutReceiverArgument(receiver);
} }
StackValue.Property iValue =
intermediateValueForProperty(propertyDescriptor, directToField, isSuper ? (JetSuperExpression) r : null, receiver);
return intermediateValueForProperty(propertyDescriptor, directToField, isSuper ? (JetSuperExpression) r : null, receiver);
return iValue;
} }
if (descriptor instanceof ClassDescriptor) { if (descriptor instanceof ClassDescriptor) {
@@ -2233,7 +2230,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
} }
@NotNull @NotNull
public StackValue invokeFunction(@NotNull Call call, @NotNull final ResolvedCall<?> resolvedCall, @NotNull final StackValue receiver) { public StackValue invokeFunction(@NotNull Call call, @NotNull ResolvedCall<?> resolvedCall, @NotNull StackValue receiver) {
if (resolvedCall instanceof VariableAsFunctionResolvedCall) { if (resolvedCall instanceof VariableAsFunctionResolvedCall) {
return invokeFunction(call, ((VariableAsFunctionResolvedCall) resolvedCall).getFunctionCall(), receiver); return invokeFunction(call, ((VariableAsFunctionResolvedCall) resolvedCall).getFunctionCall(), receiver);
} }
@@ -3272,7 +3269,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
boolean keepReturnValue = Boolean.TRUE.equals(bindingContext.get(VARIABLE_REASSIGNMENT, expression)) boolean keepReturnValue = Boolean.TRUE.equals(bindingContext.get(VARIABLE_REASSIGNMENT, expression))
|| !KotlinBuiltIns.getInstance().getUnitType().equals(descriptor.getReturnType()); || !KotlinBuiltIns.getInstance().getUnitType().equals(descriptor.getReturnType());
callAugAssignMethod(expression, resolvedCall, (Callable) callable, lhsType, keepReturnValue); callAugAssignMethod(expression, resolvedCall, callable, lhsType, keepReturnValue);
return StackValue.none(); return StackValue.none();
} }
@@ -3662,12 +3659,10 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
ResolvedCall<FunctionDescriptor> resolvedCall = isGetter ? resolvedGetCall : resolvedSetCall; ResolvedCall<FunctionDescriptor> resolvedCall = isGetter ? resolvedGetCall : resolvedSetCall;
assert resolvedCall != null : "couldn't find resolved call: " + expression.getText(); assert resolvedCall != null : "couldn't find resolved call: " + expression.getText();
if (callable instanceof Callable) {
Callable callableMethod = (Callable) callable;
ArgumentGenerator argumentGenerator = ArgumentGenerator argumentGenerator =
new CallBasedArgumentGenerator(this, defaultCallGenerator, new CallBasedArgumentGenerator(this, defaultCallGenerator,
resolvedCall.getResultingDescriptor().getValueParameters(), resolvedCall.getResultingDescriptor().getValueParameters(),
callableMethod.getValueParameterTypes()); callable.getValueParameterTypes());
List<ResolvedValueArgument> valueArguments = resolvedCall.getValueArgumentsByIndex(); List<ResolvedValueArgument> valueArguments = resolvedCall.getValueArgumentsByIndex();
assert valueArguments != null : "Failed to arrange value arguments by index: " + operationDescriptor; assert valueArguments != null : "Failed to arrange value arguments by index: " + operationDescriptor;
@@ -3680,11 +3675,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
return new StackValue.CollectionElementReceiver(callable, receiver, resolvedGetCall, resolvedSetCall, isGetter, this, return new StackValue.CollectionElementReceiver(callable, receiver, resolvedGetCall, resolvedSetCall, isGetter, this,
argumentGenerator, valueArguments, array, arrayType, expression, argumentTypes); argumentGenerator, valueArguments, array, arrayType, expression, argumentTypes);
}
else {
return new StackValue.CollectionElementReceiver(callable, receiver, resolvedGetCall, resolvedSetCall, isGetter, this,
null, null, array, arrayType, expression, argumentTypes);
}
} }
@Override @Override
@@ -3866,7 +3857,7 @@ The "returned" value of try expression with no finally is either the last expres
final JetType rightType = bindingContext.get(TYPE, typeReference); final JetType rightType = bindingContext.get(TYPE, typeReference);
assert rightType != null; assert rightType != null;
final Type rightTypeAsm = boxType(asmType(rightType)); Type rightTypeAsm = boxType(asmType(rightType));
final JetExpression left = expression.getLeft(); final JetExpression left = expression.getLeft();
DeclarationDescriptor descriptor = rightType.getConstructor().getDeclarationDescriptor(); DeclarationDescriptor descriptor = rightType.getConstructor().getDeclarationDescriptor();