rename
ResolveMode enum to {TOP_LEVEL_CALL, NESTED_CALL}
completeValueArgumentsInference to completeNestedCallsInference
This commit is contained in:
+2
-2
@@ -181,11 +181,11 @@ public class ArgumentTypeResolver {
|
||||
if (expression instanceof JetCallExpression) {
|
||||
result = callExpressionResolver.getCallExpressionTypeInfoForCall(
|
||||
(JetCallExpression) expression, ReceiverValue.NO_RECEIVER, null,
|
||||
context.replaceExpectedType(TypeUtils.NO_EXPECTED_TYPE), ResolveMode.INTERNAL);
|
||||
context.replaceExpectedType(TypeUtils.NO_EXPECTED_TYPE), ResolveMode.NESTED_CALL);
|
||||
}
|
||||
if (expression instanceof JetQualifiedExpression) {
|
||||
result = callExpressionResolver.getQualifiedExpressionExtendedTypeInfo(
|
||||
(JetQualifiedExpression) expression, context.replaceExpectedType(TypeUtils.NO_EXPECTED_TYPE), ResolveMode.INTERNAL);
|
||||
(JetQualifiedExpression) expression, context.replaceExpectedType(TypeUtils.NO_EXPECTED_TYPE), ResolveMode.NESTED_CALL);
|
||||
}
|
||||
if (result != null) {
|
||||
recordExpressionType(expression, context, result.getTypeInfo());
|
||||
|
||||
+7
-7
@@ -159,7 +159,7 @@ public class CallExpressionResolver {
|
||||
if (!results.isNothing()) {
|
||||
checkSuper(receiver, results, context.trace, callExpression);
|
||||
result[0] = true;
|
||||
if (results.isSingleResult() && resolveMode == ResolveMode.NORMAL) {
|
||||
if (results.isSingleResult() && resolveMode == ResolveMode.TOP_LEVEL_CALL) {
|
||||
if (CallResolverUtil.hasReturnTypeDependentOnNotInferredParams(results.getResultingCall())) {
|
||||
return null;
|
||||
}
|
||||
@@ -179,7 +179,7 @@ public class CallExpressionResolver {
|
||||
CallResolver callResolver = expressionTypingServices.getCallResolver();
|
||||
Call call = CallMaker.makePropertyCall(receiver, callOperationNode, nameExpression);
|
||||
OverloadResolutionResults<VariableDescriptor> resolutionResult = callResolver.resolveSimpleProperty(
|
||||
BasicCallResolutionContext.create(context.replaceBindingTrace(traceForVariable), call, ResolveMode.NORMAL));
|
||||
BasicCallResolutionContext.create(context.replaceBindingTrace(traceForVariable), call, ResolveMode.TOP_LEVEL_CALL));
|
||||
if (!resolutionResult.isNothing()) {
|
||||
traceForVariable.commit();
|
||||
checkSuper(receiver, resolutionResult, context.trace, nameExpression);
|
||||
@@ -223,7 +223,7 @@ public class CallExpressionResolver {
|
||||
|
||||
Call call = CallMaker.makeCall(nameExpression, receiver, callOperationNode, nameExpression, Collections.<ValueArgument>emptyList());
|
||||
TemporaryBindingTrace traceForFunction = TemporaryBindingTrace.create(context.trace, "trace to resolve as function", nameExpression);
|
||||
ResolvedCall<FunctionDescriptor> resolvedCall = getResolvedCallForFunction(call, nameExpression, receiver, context, ResolveMode.NORMAL, result);
|
||||
ResolvedCall<FunctionDescriptor> resolvedCall = getResolvedCallForFunction(call, nameExpression, receiver, context, ResolveMode.TOP_LEVEL_CALL, result);
|
||||
if (result[0]) {
|
||||
FunctionDescriptor functionDescriptor = resolvedCall != null ? resolvedCall.getResultingDescriptor() : null;
|
||||
traceForFunction.commit();
|
||||
@@ -240,7 +240,7 @@ public class CallExpressionResolver {
|
||||
@NotNull
|
||||
public JetTypeInfo getCallExpressionTypeInfo(@NotNull JetCallExpression callExpression, @NotNull ReceiverValue receiver,
|
||||
@Nullable ASTNode callOperationNode, @NotNull ResolutionContext context) {
|
||||
return getCallExpressionTypeInfoForCall(callExpression, receiver, callOperationNode, context, ResolveMode.NORMAL).getTypeInfo();
|
||||
return getCallExpressionTypeInfoForCall(callExpression, receiver, callOperationNode, context, ResolveMode.TOP_LEVEL_CALL).getTypeInfo();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -250,7 +250,7 @@ public class CallExpressionResolver {
|
||||
) {
|
||||
TypeInfoForCall typeInfoForCall = getCallExpressionTypeInfoForCallWithoutFinalTypeCheck(callExpression, receiver, callOperationNode,
|
||||
context, resolveMode);
|
||||
if (resolveMode == ResolveMode.NORMAL) {
|
||||
if (resolveMode == ResolveMode.TOP_LEVEL_CALL) {
|
||||
DataFlowUtils.checkType(typeInfoForCall.getType(), callExpression, context, typeInfoForCall.getDataFlowInfo());
|
||||
}
|
||||
return typeInfoForCall;
|
||||
@@ -352,7 +352,7 @@ public class CallExpressionResolver {
|
||||
|
||||
@NotNull
|
||||
public JetTypeInfo getQualifiedExpressionTypeInfo(@NotNull JetQualifiedExpression expression, @NotNull ResolutionContext context) {
|
||||
return getQualifiedExpressionExtendedTypeInfo(expression, context, ResolveMode.NORMAL).getTypeInfo();
|
||||
return getQualifiedExpressionExtendedTypeInfo(expression, context, ResolveMode.TOP_LEVEL_CALL).getTypeInfo();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -392,7 +392,7 @@ public class CallExpressionResolver {
|
||||
context.trace.record(BindingContext.EXPRESSION_TYPE, selectorExpression, selectorReturnType);
|
||||
}
|
||||
JetTypeInfo typeInfo = JetTypeInfo.create(selectorReturnType, selectorReturnTypeInfo.getDataFlowInfo());
|
||||
if (resolveMode == ResolveMode.NORMAL) {
|
||||
if (resolveMode == ResolveMode.TOP_LEVEL_CALL) {
|
||||
DataFlowUtils.checkType(typeInfo.getType(), expression, context, typeInfo.getDataFlowInfo());
|
||||
}
|
||||
return TypeInfoForCall.create(typeInfo, selectorReturnTypeInfo);
|
||||
|
||||
@@ -126,7 +126,7 @@ public class CallResolver {
|
||||
@NotNull JetType expectedType,
|
||||
@NotNull DataFlowInfo dataFlowInfo
|
||||
) {
|
||||
return resolveFunctionCall(BasicCallResolutionContext.create(trace, scope, call, expectedType, dataFlowInfo, ResolveMode.NORMAL, false));
|
||||
return resolveFunctionCall(BasicCallResolutionContext.create(trace, scope, call, expectedType, dataFlowInfo, ResolveMode.TOP_LEVEL_CALL, false));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -292,7 +292,7 @@ public class CallResolver {
|
||||
if (prioritizedTasks.isEmpty()) {
|
||||
return results;
|
||||
}
|
||||
if (context.resolveMode == ResolveMode.INTERNAL) return results;
|
||||
if (context.resolveMode == ResolveMode.NESTED_CALL) return results;
|
||||
|
||||
TracingStrategy tracing = prioritizedTasks.iterator().next().tracing;
|
||||
return completeTypeInferenceDependentOnExpectedType(context, results, tracing);
|
||||
@@ -335,7 +335,7 @@ public class CallResolver {
|
||||
if (!resolvedCall.hasUnknownTypeParameters()) {
|
||||
CallCandidateResolutionContext<D> callCandidateResolutionContext =
|
||||
CallCandidateResolutionContext.createForCallBeingAnalyzed((ResolvedCallImpl<D>) resolvedCall, context, tracing);
|
||||
candidateResolver.completeValueArgumentsInference(callCandidateResolutionContext);
|
||||
candidateResolver.completeNestedCallsInference(callCandidateResolutionContext);
|
||||
return results;
|
||||
}
|
||||
ResolvedCallImpl<D> copy = CallResolverUtil.copy((ResolvedCallImpl<D>) resolvedCall, context);
|
||||
|
||||
@@ -229,7 +229,7 @@ public class CandidateResolver {
|
||||
|
||||
if (!constraintSystem.isSuccessful()) {
|
||||
resolvedCall.setResultingSubstitutor(constraintSystemWithoutExpectedTypeConstraint.getResultingSubstitutor());
|
||||
completeValueArgumentsInference(context);
|
||||
completeNestedCallsInference(context);
|
||||
List<JetType> argumentTypes = checkValueArgumentTypes(context, resolvedCall, context.trace,
|
||||
RESOLVE_FUNCTION_ARGUMENTS).argumentTypes;
|
||||
JetType receiverType = resolvedCall.getReceiverArgument().exists() ? resolvedCall.getReceiverArgument().getType() : null;
|
||||
@@ -256,7 +256,7 @@ public class CandidateResolver {
|
||||
}
|
||||
resolvedCall.setResultingSubstitutor(constraintSystem.getResultingSubstitutor());
|
||||
|
||||
completeValueArgumentsInference(context);
|
||||
completeNestedCallsInference(context);
|
||||
// Here we type check the arguments with inferred types expected
|
||||
checkAllValueArguments(context, context.trace, RESOLVE_FUNCTION_ARGUMENTS);
|
||||
|
||||
@@ -273,7 +273,7 @@ public class CandidateResolver {
|
||||
}
|
||||
}
|
||||
|
||||
public <D extends CallableDescriptor> void completeValueArgumentsInference(
|
||||
public <D extends CallableDescriptor> void completeNestedCallsInference(
|
||||
@NotNull CallCandidateResolutionContext<D> context
|
||||
) {
|
||||
ResolvedCallImpl<D> resolvedCall = context.candidateCall;
|
||||
@@ -296,12 +296,12 @@ public class CandidateResolver {
|
||||
if (storedContextForArgument == null) continue;
|
||||
|
||||
CallCandidateResolutionContext<FunctionDescriptor> contextForArgument =
|
||||
storedContextForArgument.replaceResolveMode(ResolveMode.NORMAL).replaceBindingTrace(context.trace).replaceExpectedType(expectedType);
|
||||
storedContextForArgument.replaceResolveMode(ResolveMode.TOP_LEVEL_CALL).replaceBindingTrace(context.trace).replaceExpectedType(expectedType);
|
||||
if (contextForArgument.candidateCall.hasUnknownTypeParameters()) {
|
||||
completeTypeInferenceDependentOnExpectedTypeForCall(contextForArgument, true);
|
||||
}
|
||||
else {
|
||||
completeValueArgumentsInference(contextForArgument);
|
||||
completeNestedCallsInference(contextForArgument);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,6 @@
|
||||
package org.jetbrains.jet.lang.resolve.calls.context;
|
||||
|
||||
public enum ResolveMode {
|
||||
NORMAL,
|
||||
INTERNAL
|
||||
TOP_LEVEL_CALL,
|
||||
NESTED_CALL
|
||||
}
|
||||
|
||||
+1
-1
@@ -106,6 +106,6 @@ public class ExpressionTypingContext extends ResolutionContext<ExpressionTypingC
|
||||
@NotNull
|
||||
public OverloadResolutionResults<FunctionDescriptor> resolveCallWithGivenName(@NotNull Call call, @NotNull JetReferenceExpression functionReference, @NotNull Name name) {
|
||||
return expressionTypingServices.getCallResolver().resolveCallWithGivenName(
|
||||
BasicCallResolutionContext.create(this, call, ResolveMode.NORMAL), functionReference, name);
|
||||
BasicCallResolutionContext.create(this, call, ResolveMode.TOP_LEVEL_CALL), functionReference, name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2125,9 +2125,9 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/diagnostics/tests/inference/complicated"), "kt", true);
|
||||
}
|
||||
|
||||
@TestMetadata("completeValueArgumentsInference.kt")
|
||||
public void testCompleteValueArgumentsInference() throws Exception {
|
||||
doTest("compiler/testData/diagnostics/tests/inference/complicated/completeValueArgumentsInference.kt");
|
||||
@TestMetadata("completeNestedCallsInference.kt")
|
||||
public void testCompleteNestedCallsInference() throws Exception {
|
||||
doTest("compiler/testData/diagnostics/tests/inference/complicated/completeNestedCallsInference.kt");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user