Refactoring: do not duplicate 'instructionElement' (old 'calleeExpression') as a parameter
to 'builder.call()' and 'builder.read()' methods
This commit is contained in:
@@ -127,16 +127,14 @@ public interface JetControlFlowBuilder {
|
||||
|
||||
@NotNull
|
||||
ReadValueInstruction readVariable(
|
||||
@NotNull JetElement instructionElement,
|
||||
@NotNull JetExpression valueElement,
|
||||
@NotNull JetExpression expression,
|
||||
@NotNull ResolvedCall<?> resolvedCall,
|
||||
@NotNull Map<PseudoValue, ReceiverValue> receiverValues
|
||||
);
|
||||
|
||||
@NotNull
|
||||
CallInstruction call(
|
||||
@NotNull JetElement instructionElement,
|
||||
@Nullable JetExpression valueElement,
|
||||
@NotNull JetExpression expression,
|
||||
@NotNull ResolvedCall<?> resolvedCall,
|
||||
@NotNull Map<PseudoValue, ReceiverValue> receiverValues,
|
||||
@NotNull Map<PseudoValue, ValueParameterDescriptor> arguments
|
||||
|
||||
@@ -86,23 +86,22 @@ public abstract class JetControlFlowBuilderAdapter implements JetControlFlowBuil
|
||||
@NotNull
|
||||
@Override
|
||||
public ReadValueInstruction readVariable(
|
||||
@NotNull JetElement instructionElement,
|
||||
@NotNull JetExpression valueElement,
|
||||
@NotNull JetExpression expression,
|
||||
@NotNull ResolvedCall<?> resolvedCall,
|
||||
@NotNull Map<PseudoValue, ReceiverValue> receiverValues) {
|
||||
return getDelegateBuilder().readVariable(instructionElement, valueElement, resolvedCall, receiverValues);
|
||||
@NotNull Map<PseudoValue, ReceiverValue> receiverValues
|
||||
) {
|
||||
return getDelegateBuilder().readVariable(expression, resolvedCall, receiverValues);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public CallInstruction call(
|
||||
@NotNull JetElement instructionElement,
|
||||
@Nullable JetExpression valueElement,
|
||||
@NotNull JetExpression expression,
|
||||
@NotNull ResolvedCall<?> resolvedCall,
|
||||
@NotNull Map<PseudoValue, ReceiverValue> receiverValues,
|
||||
@NotNull Map<PseudoValue, ValueParameterDescriptor> arguments
|
||||
) {
|
||||
return getDelegateBuilder().call(instructionElement, valueElement, resolvedCall, receiverValues, arguments);
|
||||
return getDelegateBuilder().call(expression, resolvedCall, receiverValues, arguments);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -277,7 +277,7 @@ public class JetControlFlowProcessor {
|
||||
|
||||
CallableDescriptor resultingDescriptor = resolvedCall.getResultingDescriptor();
|
||||
if (resultingDescriptor instanceof ReceiverParameterDescriptor) {
|
||||
builder.readVariable(expression, expression, resolvedCall, getReceiverValues(resolvedCall, true));
|
||||
builder.readVariable(expression, resolvedCall, getReceiverValues(resolvedCall, true));
|
||||
}
|
||||
|
||||
copyValue(expression, expression.getInstanceReference());
|
||||
@@ -453,7 +453,7 @@ public class JetControlFlowProcessor {
|
||||
private void generateArrayAssignment(
|
||||
JetArrayAccessExpression lhs,
|
||||
@NotNull Function0<PseudoValue> rhsDeferredValue,
|
||||
JetExpression parentExpression
|
||||
@NotNull JetExpression parentExpression
|
||||
) {
|
||||
ResolvedCall<FunctionDescriptor> setResolvedCall = trace.get(BindingContext.INDEXED_LVALUE_SET, lhs);
|
||||
|
||||
@@ -473,7 +473,7 @@ public class JetControlFlowProcessor {
|
||||
SmartFMap<PseudoValue, ValueParameterDescriptor> argumentValues =
|
||||
getArraySetterArguments(rhsDeferredValue, setResolvedCall);
|
||||
|
||||
builder.call(parentExpression, parentExpression, setResolvedCall, receiverValues, argumentValues);
|
||||
builder.call(parentExpression, setResolvedCall, receiverValues, argumentValues);
|
||||
}
|
||||
|
||||
/* We assume that assignment right-hand side corresponds to the last argument of the call
|
||||
@@ -1141,7 +1141,6 @@ public class JetControlFlowProcessor {
|
||||
PseudoValue writtenValue;
|
||||
if (resolvedCall != null) {
|
||||
writtenValue = builder.call(
|
||||
entry,
|
||||
entry,
|
||||
resolvedCall,
|
||||
getReceiverValues(resolvedCall, false),
|
||||
@@ -1412,10 +1411,10 @@ public class JetControlFlowProcessor {
|
||||
: "No callee for " + callExpression.getText();
|
||||
assert parameterValues.isEmpty()
|
||||
: "Variable-based call with non-empty argument list: " + callExpression.getText();
|
||||
return builder.readVariable(calleeExpression, calleeExpression, resolvedCall, receivers);
|
||||
return builder.readVariable(calleeExpression, resolvedCall, receivers);
|
||||
}
|
||||
mark(resolvedCall.getCall().getCallElement());
|
||||
return builder.call(callExpression, callExpression, resolvedCall, receivers, parameterValues);
|
||||
return builder.call(callExpression, resolvedCall, receivers, parameterValues);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+8
-11
@@ -450,27 +450,24 @@ public class JetControlFlowInstructionsGenerator extends JetControlFlowBuilderAd
|
||||
@NotNull
|
||||
@Override
|
||||
public ReadValueInstruction readVariable(
|
||||
@NotNull JetElement instructionElement,
|
||||
@NotNull JetExpression valueElement,
|
||||
@NotNull JetExpression expression,
|
||||
@NotNull ResolvedCall<?> resolvedCall,
|
||||
@NotNull Map<PseudoValue, ReceiverValue> receiverValues
|
||||
) {
|
||||
return read(instructionElement, valueElement, resolvedCall, receiverValues);
|
||||
return read(expression, resolvedCall, receiverValues);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public CallInstruction call(
|
||||
@NotNull JetElement instructionElement,
|
||||
@Nullable JetExpression valueElement,
|
||||
@NotNull JetExpression expression,
|
||||
@NotNull ResolvedCall<?> resolvedCall,
|
||||
@NotNull Map<PseudoValue, ReceiverValue> receiverValues,
|
||||
@NotNull Map<PseudoValue, ValueParameterDescriptor> arguments
|
||||
) {
|
||||
JetType returnType = resolvedCall.getResultingDescriptor().getReturnType();
|
||||
CallInstruction instruction = CallInstruction.object$.create(
|
||||
instructionElement,
|
||||
valueElement,
|
||||
expression,
|
||||
getCurrentScope(),
|
||||
resolvedCall,
|
||||
receiverValues,
|
||||
@@ -512,13 +509,13 @@ public class JetControlFlowInstructionsGenerator extends JetControlFlowBuilderAd
|
||||
|
||||
@NotNull
|
||||
private ReadValueInstruction read(
|
||||
@NotNull JetElement instructionElement,
|
||||
@NotNull JetExpression expression,
|
||||
@Nullable ResolvedCall<?> resolvedCall,
|
||||
@NotNull Map<PseudoValue, ReceiverValue> receiverValues) {
|
||||
@NotNull Map<PseudoValue, ReceiverValue> receiverValues
|
||||
) {
|
||||
AccessTarget accessTarget = resolvedCall != null ? new AccessTarget.Call(resolvedCall) : AccessTarget.BlackBox.instance$;
|
||||
ReadValueInstruction instruction = ReadValueInstruction.object$.create(
|
||||
instructionElement, expression, getCurrentScope(), accessTarget, receiverValues, valueFactory
|
||||
expression, getCurrentScope(), accessTarget, receiverValues, valueFactory
|
||||
);
|
||||
add(instruction);
|
||||
return instruction;
|
||||
@@ -526,7 +523,7 @@ public class JetControlFlowInstructionsGenerator extends JetControlFlowBuilderAd
|
||||
|
||||
@NotNull
|
||||
private ReadValueInstruction read(@NotNull JetExpression expression) {
|
||||
return read(expression, expression, null, Collections.<PseudoValue, ReceiverValue>emptyMap());
|
||||
return read(expression, null, Collections.<PseudoValue, ReceiverValue>emptyMap());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -78,14 +78,13 @@ public class ReadValueInstruction private (
|
||||
class object {
|
||||
public fun create (
|
||||
element: JetElement,
|
||||
valueElement: JetElement,
|
||||
lexicalScope: LexicalScope,
|
||||
target: AccessTarget,
|
||||
receiverValues: Map<PseudoValue, ReceiverValue>,
|
||||
factory: PseudoValueFactory
|
||||
): ReadValueInstruction {
|
||||
return ReadValueInstruction(element, lexicalScope, target, receiverValues, null).let { instruction ->
|
||||
instruction.newResultValue(factory, valueElement)
|
||||
instruction.newResultValue(factory, element)
|
||||
instruction
|
||||
}
|
||||
}
|
||||
|
||||
+1
-2
@@ -82,14 +82,13 @@ public class CallInstruction private(
|
||||
class object {
|
||||
fun create (
|
||||
element: JetElement,
|
||||
valueElement: JetElement?,
|
||||
lexicalScope: LexicalScope,
|
||||
resolvedCall: ResolvedCall<*>,
|
||||
receiverValues: Map<PseudoValue, ReceiverValue>,
|
||||
arguments: Map<PseudoValue, ValueParameterDescriptor>,
|
||||
factory: PseudoValueFactory?
|
||||
): CallInstruction =
|
||||
CallInstruction(element, lexicalScope, resolvedCall, receiverValues, arguments).setResult(factory, valueElement) as CallInstruction
|
||||
CallInstruction(element, lexicalScope, resolvedCall, receiverValues, arguments).setResult(factory, element) as CallInstruction
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user