From fd21b6cbe97a66971ea9bc56f31d8dd37b5ebef5 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 9 Jul 2014 14:25:26 +0400 Subject: [PATCH] Pseudocode: Use call element stored in resolved calls to generate call/read instructions --- .../jet/lang/cfg/JetControlFlowProcessor.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java index 49d54d2c4f0..c95b286a2cb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java @@ -305,7 +305,7 @@ public class JetControlFlowProcessor { ResolvedCall resolvedCall = getResolvedCall(expression, trace.getBindingContext()); if (resolvedCall instanceof VariableAsFunctionResolvedCall) { VariableAsFunctionResolvedCall variableAsFunctionResolvedCall = (VariableAsFunctionResolvedCall) resolvedCall; - generateCall(expression, variableAsFunctionResolvedCall.getVariableCall()); + generateCall(variableAsFunctionResolvedCall.getVariableCall()); } else if (!generateCall(expression) && !(expression.getParent() instanceof JetCallExpression)) { createNonSyntheticValue(expression, generateAndGetReceiverIfAny(expression)); @@ -339,7 +339,7 @@ public class JetControlFlowProcessor { else if (OperatorConventions.ASSIGNMENT_OPERATIONS.containsKey(operationType)) { ResolvedCall resolvedCall = getResolvedCall(expression, trace.getBindingContext()); if (resolvedCall != null) { - PseudoValue rhsValue = generateCall(expression, resolvedCall).getOutputValue(); + PseudoValue rhsValue = generateCall(resolvedCall).getOutputValue(); Name assignMethodName = OperatorConventions.getNameForOperationSymbol((JetToken) expression.getOperationToken()); if (!resolvedCall.getResultingDescriptor().getName().equals(assignMethodName)) { /* At this point assignment of the form a += b actually means a = a + b @@ -588,7 +588,7 @@ public class JetControlFlowProcessor { PseudoValue rhsValue; if (resolvedCall != null) { - rhsValue = generateCall(expression, resolvedCall).getOutputValue(); + rhsValue = generateCall(resolvedCall).getOutputValue(); } else { generateInstructions(baseExpression); @@ -1412,15 +1412,17 @@ public class JetControlFlowProcessor { builder.compilationError(callElement, "No resolved call"); return false; } - generateCall(callElement, resolvedCall); + generateCall(resolvedCall); return true; } @NotNull - private InstructionWithValue generateCall(@NotNull JetElement callElement, @NotNull ResolvedCall resolvedCall) { + private InstructionWithValue generateCall(@NotNull ResolvedCall resolvedCall) { + JetElement callElement = resolvedCall.getCall().getCallElement(); + if (resolvedCall instanceof VariableAsFunctionResolvedCall) { VariableAsFunctionResolvedCall variableAsFunctionResolvedCall = (VariableAsFunctionResolvedCall) resolvedCall; - return generateCall(callElement, variableAsFunctionResolvedCall.getFunctionCall()); + return generateCall(variableAsFunctionResolvedCall.getFunctionCall()); } CallableDescriptor resultingDescriptor = resolvedCall.getResultingDescriptor();