added checkType of TypeInfo method

This commit is contained in:
Svetlana Isakova
2013-09-01 16:57:47 +04:00
parent 70b11f6d39
commit cf22bc7c35
3 changed files with 15 additions and 7 deletions
@@ -284,7 +284,7 @@ public class CallExpressionResolver {
JetTypeInfo typeInfo = getCallExpressionTypeInfoWithoutFinalTypeCheck(
callExpression, receiver, callOperationNode, context);
if (context.contextDependency == ContextDependency.INDEPENDENT) {
DataFlowUtils.checkType(typeInfo.getType(), callExpression, context, typeInfo.getDataFlowInfo());
DataFlowUtils.checkType(typeInfo, callExpression, context);
}
return typeInfo;
}
@@ -409,7 +409,7 @@ public class CallExpressionResolver {
}
JetTypeInfo typeInfo = JetTypeInfo.create(selectorReturnType, selectorReturnTypeInfo.getDataFlowInfo());
if (context.contextDependency == ContextDependency.INDEPENDENT) {
DataFlowUtils.checkType(typeInfo.getType(), expression, context, typeInfo.getDataFlowInfo());
DataFlowUtils.checkType(typeInfo, expression, context);
}
return typeInfo;
}
@@ -101,7 +101,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
return JetTypeInfo.create(null, context.dataFlowInfo);
}
JetTypeInfo typeInfo = facade.getTypeInfo(innerExpression, context.replaceScope(context.scope), isStatement);
return DataFlowUtils.checkType(typeInfo.getType(), expression, context, typeInfo.getDataFlowInfo());
return DataFlowUtils.checkType(typeInfo, expression, context);
}
private static JetTypeInfo createNumberValueTypeInfo(
@@ -845,7 +845,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
// TODO : Some processing for the label?
JetTypeInfo typeInfo = facade.getTypeInfo(baseExpression, context, isStatement);
context.labelResolver.exitLabeledElement(baseExpression);
return DataFlowUtils.checkType(typeInfo.getType(), expression, context, typeInfo.getDataFlowInfo());
return DataFlowUtils.checkType(typeInfo, expression, context);
}
private static boolean isKnownToBeNotNull(JetExpression expression, ExpressionTypingContext context) {
@@ -932,7 +932,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
context.trace.report(UNSUPPORTED.on(operationSign, "Unknown operation"));
result = JetTypeInfo.create(null, context.dataFlowInfo);
}
return DataFlowUtils.checkType(result.getType(), expression, contextWithExpectedType, result.getDataFlowInfo());
return DataFlowUtils.checkType(result, expression, contextWithExpectedType);
}
private JetTypeInfo visitEquality(
@@ -1166,7 +1166,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
@Override
public JetTypeInfo visitArrayAccessExpression(JetArrayAccessExpression expression, ExpressionTypingContext context) {
JetTypeInfo typeInfo = resolveArrayAccessGetMethod(expression, context);
return DataFlowUtils.checkType(typeInfo.getType(), expression, context, typeInfo.getDataFlowInfo());
return DataFlowUtils.checkType(typeInfo, expression, context);
}
@NotNull
@@ -23,7 +23,6 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.calls.context.ContextDependency;
import org.jetbrains.jet.lang.resolve.calls.context.ResolutionContext;
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowValue;
@@ -140,6 +139,15 @@ public class DataFlowUtils {
return JetTypeInfo.create(checkType(expressionType, expression, context), dataFlowInfo);
}
@NotNull
public static JetTypeInfo checkType(@NotNull JetTypeInfo typeInfo, @NotNull JetExpression expression, @NotNull ResolutionContext context) {
JetType type = checkType(typeInfo.getType(), expression, context);
if (type == typeInfo.getType()) {
return typeInfo;
}
return JetTypeInfo.create(type, typeInfo.getDataFlowInfo());
}
@Nullable
public static JetType checkType(@Nullable JetType expressionType, @NotNull JetExpression expression, @NotNull ResolutionContext context) {
return checkType(expressionType, expression, context.expectedType, context.dataFlowInfo, context.trace);