Got rid of repeated local variable

This commit is contained in:
Andrey Breslav
2013-01-31 18:10:49 +04:00
parent 2d2c44ca9d
commit 1fcbf1721b
@@ -23,9 +23,8 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.CallableDescriptor; import org.jetbrains.jet.lang.descriptors.CallableDescriptor;
import org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor; import org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor;
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor; import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
import org.jetbrains.jet.lang.diagnostics.Diagnostic;
import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.DelegatingBindingTrace;
import org.jetbrains.jet.lang.resolve.calls.model.*; import org.jetbrains.jet.lang.resolve.calls.model.*;
import org.jetbrains.jet.lang.resolve.calls.tasks.TracingStrategy; import org.jetbrains.jet.lang.resolve.calls.tasks.TracingStrategy;
import org.jetbrains.jet.lang.resolve.calls.util.CallMaker; import org.jetbrains.jet.lang.resolve.calls.util.CallMaker;
@@ -39,8 +38,6 @@ import java.util.Set;
import static org.jetbrains.jet.lang.diagnostics.Errors.*; import static org.jetbrains.jet.lang.diagnostics.Errors.*;
import static org.jetbrains.jet.lang.resolve.BindingContext.REFERENCE_TARGET; import static org.jetbrains.jet.lang.resolve.BindingContext.REFERENCE_TARGET;
import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMapper.Status.*; import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMapper.Status.*;
import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMapper.Status.ERROR;
import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMapper.Status.STRONG_ERROR;
/*package*/ class ValueArgumentsToParametersMapper { /*package*/ class ValueArgumentsToParametersMapper {
@@ -112,7 +109,6 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap
@Override @Override
public ProcessorState processPositionedArgument(@NotNull ValueArgument argument, int index) { public ProcessorState processPositionedArgument(@NotNull ValueArgument argument, int index) {
BindingTrace traceForCall = candidateCall.getTrace();
D candidate = candidateCall.getCandidateDescriptor(); D candidate = candidateCall.getCandidateDescriptor();
List<ValueParameterDescriptor> valueParameters = candidate.getValueParameters(); List<ValueParameterDescriptor> valueParameters = candidate.getValueParameters();
@@ -130,13 +126,13 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap
usedParameters.add(valueParameterDescriptor); usedParameters.add(valueParameterDescriptor);
} }
else { else {
traceForCall.report(TOO_MANY_ARGUMENTS.on(argument.asElement(), candidate)); report(TOO_MANY_ARGUMENTS.on(argument.asElement(), candidate));
unmappedArguments.add(argument); unmappedArguments.add(argument);
setStatus(WEAK_ERROR); setStatus(WEAK_ERROR);
} }
} }
else { else {
traceForCall.report(TOO_MANY_ARGUMENTS.on(argument.asElement(), candidate)); report(TOO_MANY_ARGUMENTS.on(argument.asElement(), candidate));
unmappedArguments.add(argument); unmappedArguments.add(argument);
setStatus(ERROR); setStatus(ERROR);
} }
@@ -150,19 +146,18 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap
@Override @Override
public ProcessorState processNamedArgument(@NotNull ValueArgument argument) { public ProcessorState processNamedArgument(@NotNull ValueArgument argument) {
assert argument.isNamed(); assert argument.isNamed();
DelegatingBindingTrace traceForCall = candidateCall.getTrace();
JetSimpleNameExpression nameReference = argument.getArgumentName().getReferenceExpression(); JetSimpleNameExpression nameReference = argument.getArgumentName().getReferenceExpression();
ValueParameterDescriptor valueParameterDescriptor = parameterByName.get(nameReference.getReferencedNameAsName()); ValueParameterDescriptor valueParameterDescriptor = parameterByName.get(nameReference.getReferencedNameAsName());
if (valueParameterDescriptor == null) { if (valueParameterDescriptor == null) {
traceForCall.report(NAMED_PARAMETER_NOT_FOUND.on(nameReference)); report(NAMED_PARAMETER_NOT_FOUND.on(nameReference));
unmappedArguments.add(argument); unmappedArguments.add(argument);
setStatus(WEAK_ERROR); setStatus(WEAK_ERROR);
} }
else { else {
traceForCall.record(REFERENCE_TARGET, nameReference, valueParameterDescriptor); candidateCall.getTrace().record(REFERENCE_TARGET, nameReference, valueParameterDescriptor);
if (!usedParameters.add(valueParameterDescriptor)) { if (!usedParameters.add(valueParameterDescriptor)) {
traceForCall.report(ARGUMENT_PASSED_TWICE.on(nameReference)); report(ARGUMENT_PASSED_TWICE.on(nameReference));
unmappedArguments.add(argument); unmappedArguments.add(argument);
setStatus(WEAK_ERROR); setStatus(WEAK_ERROR);
} }
@@ -178,7 +173,7 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap
public ProcessorState processPositionedArgument( public ProcessorState processPositionedArgument(
@NotNull ValueArgument argument, int index @NotNull ValueArgument argument, int index
) { ) {
candidateCall.getTrace().report(MIXING_NAMED_AND_POSITIONED_ARGUMENTS.on(argument.asElement())); report(MIXING_NAMED_AND_POSITIONED_ARGUMENTS.on(argument.asElement()));
setStatus(WEAK_ERROR); setStatus(WEAK_ERROR);
return positionedThenNamed; return positionedThenNamed;
@@ -208,7 +203,6 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap
private void processFunctionLiteralArguments() { private void processFunctionLiteralArguments() {
D candidate = candidateCall.getCandidateDescriptor(); D candidate = candidateCall.getCandidateDescriptor();
DelegatingBindingTrace traceForCall = candidateCall.getTrace();
List<ValueParameterDescriptor> valueParameters = candidate.getValueParameters(); List<ValueParameterDescriptor> valueParameters = candidate.getValueParameters();
List<JetExpression> functionLiteralArguments = call.getFunctionLiteralArguments(); List<JetExpression> functionLiteralArguments = call.getFunctionLiteralArguments();
@@ -216,7 +210,7 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap
JetExpression possiblyLabeledFunctionLiteral = functionLiteralArguments.get(0); JetExpression possiblyLabeledFunctionLiteral = functionLiteralArguments.get(0);
if (valueParameters.isEmpty()) { if (valueParameters.isEmpty()) {
traceForCall.report(TOO_MANY_ARGUMENTS.on(possiblyLabeledFunctionLiteral, candidate)); report(TOO_MANY_ARGUMENTS.on(possiblyLabeledFunctionLiteral, candidate));
setStatus(ERROR); setStatus(ERROR);
} }
else { else {
@@ -231,12 +225,12 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap
ValueParameterDescriptor valueParameterDescriptor = valueParameters.get(valueParameters.size() - 1); ValueParameterDescriptor valueParameterDescriptor = valueParameters.get(valueParameters.size() - 1);
if (valueParameterDescriptor.getVarargElementType() != null) { if (valueParameterDescriptor.getVarargElementType() != null) {
traceForCall.report(VARARG_OUTSIDE_PARENTHESES.on(possiblyLabeledFunctionLiteral)); report(VARARG_OUTSIDE_PARENTHESES.on(possiblyLabeledFunctionLiteral));
setStatus(ERROR); setStatus(ERROR);
} }
else { else {
if (!usedParameters.add(valueParameterDescriptor)) { if (!usedParameters.add(valueParameterDescriptor)) {
traceForCall.report(TOO_MANY_ARGUMENTS.on(possiblyLabeledFunctionLiteral, candidate)); report(TOO_MANY_ARGUMENTS.on(possiblyLabeledFunctionLiteral, candidate));
setStatus(WEAK_ERROR); setStatus(WEAK_ERROR);
} }
else { else {
@@ -247,14 +241,13 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap
for (int i = 1; i < functionLiteralArguments.size(); i++) { for (int i = 1; i < functionLiteralArguments.size(); i++) {
JetExpression argument = functionLiteralArguments.get(i); JetExpression argument = functionLiteralArguments.get(i);
traceForCall.report(MANY_FUNCTION_LITERAL_ARGUMENTS.on(argument)); report(MANY_FUNCTION_LITERAL_ARGUMENTS.on(argument));
setStatus(WEAK_ERROR); setStatus(WEAK_ERROR);
} }
} }
} }
private void reportUnmappedParameters() { private void reportUnmappedParameters() {
DelegatingBindingTrace traceForCall = candidateCall.getTrace();
List<ValueParameterDescriptor> valueParameters = candidateCall.getCandidateDescriptor().getValueParameters(); List<ValueParameterDescriptor> valueParameters = candidateCall.getCandidateDescriptor().getValueParameters();
for (ValueParameterDescriptor valueParameter : valueParameters) { for (ValueParameterDescriptor valueParameter : valueParameters) {
@@ -266,7 +259,7 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap
candidateCall.recordValueArgument(valueParameter, new VarargValueArgument()); candidateCall.recordValueArgument(valueParameter, new VarargValueArgument());
} }
else { else {
tracing.noValueForParameter(traceForCall, valueParameter); tracing.noValueForParameter(candidateCall.getTrace(), valueParameter);
setStatus(ERROR); setStatus(ERROR);
} }
} }
@@ -274,17 +267,16 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap
} }
private void checkReceiverArgument() { private void checkReceiverArgument() {
DelegatingBindingTrace traceForCall = candidateCall.getTrace();
D candidate = candidateCall.getCandidateDescriptor(); D candidate = candidateCall.getCandidateDescriptor();
ReceiverParameterDescriptor receiverParameter = candidate.getReceiverParameter(); ReceiverParameterDescriptor receiverParameter = candidate.getReceiverParameter();
ReceiverValue receiverArgument = candidateCall.getReceiverArgument(); ReceiverValue receiverArgument = candidateCall.getReceiverArgument();
if (receiverParameter != null &&!receiverArgument.exists()) { if (receiverParameter != null &&!receiverArgument.exists()) {
tracing.missingReceiver(traceForCall, receiverParameter); tracing.missingReceiver(candidateCall.getTrace(), receiverParameter);
setStatus(ERROR); setStatus(ERROR);
} }
if (receiverParameter == null && receiverArgument.exists()) { if (receiverParameter == null && receiverArgument.exists()) {
tracing.noReceiverAllowed(traceForCall); tracing.noReceiverAllowed(candidateCall.getTrace());
if (call.getCalleeExpression() instanceof JetSimpleNameExpression) { if (call.getCalleeExpression() instanceof JetSimpleNameExpression) {
setStatus(STRONG_ERROR); setStatus(STRONG_ERROR);
} }
@@ -322,10 +314,16 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap
status = status.compose(newStatus); status = status.compose(newStatus);
} }
private void report(Diagnostic diagnostic) {
candidateCall.getTrace().report(diagnostic);
}
private interface ProcessorState { private interface ProcessorState {
ProcessorState processNamedArgument(@NotNull ValueArgument argument); ProcessorState processNamedArgument(@NotNull ValueArgument argument);
ProcessorState processPositionedArgument(@NotNull ValueArgument argument, int index); ProcessorState processPositionedArgument(@NotNull ValueArgument argument, int index);
} }
} }
private ValueArgumentsToParametersMapper() {}
} }