refactoring: invocation 'getArgumentTypeInfo' changed to 'getFunctionLiteralTypeInfo'
for function literals
This commit is contained in:
+17
-4
@@ -36,6 +36,7 @@ import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue;
|
||||
import org.jetbrains.jet.lang.types.ErrorUtils;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
import org.jetbrains.jet.lang.types.JetTypeInfo;
|
||||
import org.jetbrains.jet.lang.types.TypeUtils;
|
||||
import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
|
||||
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
|
||||
@@ -163,14 +164,13 @@ public class ArgumentTypeResolver {
|
||||
public TypeInfoForCall getArgumentTypeInfo(
|
||||
@Nullable JetExpression expression,
|
||||
@NotNull CallResolutionContext context,
|
||||
@NotNull ResolveArgumentsMode resolveFunctionArgumentBodies
|
||||
@NotNull ResolveArgumentsMode resolveArgumentsMode
|
||||
) {
|
||||
if (expression == null) {
|
||||
return TypeInfoForCall.create(null, context.dataFlowInfo);
|
||||
}
|
||||
if (expression instanceof JetFunctionLiteralExpression && resolveFunctionArgumentBodies == SKIP_FUNCTION_ARGUMENTS) {
|
||||
JetType type = getFunctionLiteralType((JetFunctionLiteralExpression) expression, context.scope, context.trace);
|
||||
return TypeInfoForCall.create(type, context.dataFlowInfo);
|
||||
if (expression instanceof JetFunctionLiteralExpression) {
|
||||
return TypeInfoForCall.create(getFunctionLiteralTypeInfo((JetFunctionLiteralExpression) expression, context, resolveArgumentsMode));
|
||||
}
|
||||
TypeInfoForCall cachedTypeInfo = getRecordedTypeInfoForCall(expression, context);
|
||||
if (cachedTypeInfo != null) {
|
||||
@@ -200,6 +200,19 @@ public class ArgumentTypeResolver {
|
||||
expressionTypingServices.getTypeInfo(context.scope, expression, context.expectedType, context.dataFlowInfo, context.trace));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public JetTypeInfo getFunctionLiteralTypeInfo(
|
||||
@NotNull JetFunctionLiteralExpression functionLiteralExpression,
|
||||
@NotNull CallResolutionContext context,
|
||||
@NotNull ResolveArgumentsMode resolveArgumentsMode
|
||||
) {
|
||||
if (resolveArgumentsMode == SKIP_FUNCTION_ARGUMENTS) {
|
||||
JetType type = getFunctionLiteralType(functionLiteralExpression, context.scope, context.trace);
|
||||
return JetTypeInfo.create(type, context.dataFlowInfo);
|
||||
}
|
||||
return expressionTypingServices.getTypeInfo(context.scope, functionLiteralExpression, context.expectedType, context.dataFlowInfo, context.trace);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private JetType getFunctionLiteralType(
|
||||
@NotNull JetFunctionLiteralExpression expression,
|
||||
|
||||
@@ -335,7 +335,8 @@ public class CandidateResolver {
|
||||
traceToResolveFunctionLiteral, statementExpression, mismatch);
|
||||
CallCandidateResolutionContext<D> newContext =
|
||||
context.replaceBindingTrace(errorInterceptingTrace).replaceExpectedType(expectedType);
|
||||
JetType type = argumentTypeResolver.getArgumentTypeInfo(argumentExpression, newContext, RESOLVE_FUNCTION_ARGUMENTS).getType();
|
||||
JetType type = argumentTypeResolver.getFunctionLiteralTypeInfo((JetFunctionLiteralExpression) argumentExpression, newContext,
|
||||
RESOLVE_FUNCTION_ARGUMENTS).getType();
|
||||
if (!mismatch[0]) {
|
||||
constraintSystem.addSubtypeConstraint(
|
||||
type, effectiveExpectedType, ConstraintPosition.getValueParameterPosition(valueParameterDescriptor.getIndex()));
|
||||
@@ -346,7 +347,8 @@ public class CandidateResolver {
|
||||
}
|
||||
JetType expectedTypeWithoutReturnType = hasExpectedReturnType ? CallResolverUtil.replaceReturnTypeByUnknown(expectedType) : expectedType;
|
||||
CallCandidateResolutionContext<D> newContext = context.replaceExpectedType(expectedTypeWithoutReturnType);
|
||||
JetType type = argumentTypeResolver.getArgumentTypeInfo(argumentExpression, newContext, RESOLVE_FUNCTION_ARGUMENTS).getType();
|
||||
JetType type = argumentTypeResolver.getFunctionLiteralTypeInfo((JetFunctionLiteralExpression) argumentExpression, newContext,
|
||||
RESOLVE_FUNCTION_ARGUMENTS).getType();
|
||||
constraintSystem.addSubtypeConstraint(
|
||||
type, effectiveExpectedType, ConstraintPosition.getValueParameterPosition(valueParameterDescriptor.getIndex()));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user