added checkType of TypeInfo method
This commit is contained in:
+2
-2
@@ -284,7 +284,7 @@ public class CallExpressionResolver {
|
|||||||
JetTypeInfo typeInfo = getCallExpressionTypeInfoWithoutFinalTypeCheck(
|
JetTypeInfo typeInfo = getCallExpressionTypeInfoWithoutFinalTypeCheck(
|
||||||
callExpression, receiver, callOperationNode, context);
|
callExpression, receiver, callOperationNode, context);
|
||||||
if (context.contextDependency == ContextDependency.INDEPENDENT) {
|
if (context.contextDependency == ContextDependency.INDEPENDENT) {
|
||||||
DataFlowUtils.checkType(typeInfo.getType(), callExpression, context, typeInfo.getDataFlowInfo());
|
DataFlowUtils.checkType(typeInfo, callExpression, context);
|
||||||
}
|
}
|
||||||
return typeInfo;
|
return typeInfo;
|
||||||
}
|
}
|
||||||
@@ -409,7 +409,7 @@ public class CallExpressionResolver {
|
|||||||
}
|
}
|
||||||
JetTypeInfo typeInfo = JetTypeInfo.create(selectorReturnType, selectorReturnTypeInfo.getDataFlowInfo());
|
JetTypeInfo typeInfo = JetTypeInfo.create(selectorReturnType, selectorReturnTypeInfo.getDataFlowInfo());
|
||||||
if (context.contextDependency == ContextDependency.INDEPENDENT) {
|
if (context.contextDependency == ContextDependency.INDEPENDENT) {
|
||||||
DataFlowUtils.checkType(typeInfo.getType(), expression, context, typeInfo.getDataFlowInfo());
|
DataFlowUtils.checkType(typeInfo, expression, context);
|
||||||
}
|
}
|
||||||
return typeInfo;
|
return typeInfo;
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -101,7 +101,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
|||||||
return JetTypeInfo.create(null, context.dataFlowInfo);
|
return JetTypeInfo.create(null, context.dataFlowInfo);
|
||||||
}
|
}
|
||||||
JetTypeInfo typeInfo = facade.getTypeInfo(innerExpression, context.replaceScope(context.scope), isStatement);
|
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(
|
private static JetTypeInfo createNumberValueTypeInfo(
|
||||||
@@ -845,7 +845,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
|||||||
// TODO : Some processing for the label?
|
// TODO : Some processing for the label?
|
||||||
JetTypeInfo typeInfo = facade.getTypeInfo(baseExpression, context, isStatement);
|
JetTypeInfo typeInfo = facade.getTypeInfo(baseExpression, context, isStatement);
|
||||||
context.labelResolver.exitLabeledElement(baseExpression);
|
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) {
|
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"));
|
context.trace.report(UNSUPPORTED.on(operationSign, "Unknown operation"));
|
||||||
result = JetTypeInfo.create(null, context.dataFlowInfo);
|
result = JetTypeInfo.create(null, context.dataFlowInfo);
|
||||||
}
|
}
|
||||||
return DataFlowUtils.checkType(result.getType(), expression, contextWithExpectedType, result.getDataFlowInfo());
|
return DataFlowUtils.checkType(result, expression, contextWithExpectedType);
|
||||||
}
|
}
|
||||||
|
|
||||||
private JetTypeInfo visitEquality(
|
private JetTypeInfo visitEquality(
|
||||||
@@ -1166,7 +1166,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
|||||||
@Override
|
@Override
|
||||||
public JetTypeInfo visitArrayAccessExpression(JetArrayAccessExpression expression, ExpressionTypingContext context) {
|
public JetTypeInfo visitArrayAccessExpression(JetArrayAccessExpression expression, ExpressionTypingContext context) {
|
||||||
JetTypeInfo typeInfo = resolveArrayAccessGetMethod(expression, context);
|
JetTypeInfo typeInfo = resolveArrayAccessGetMethod(expression, context);
|
||||||
return DataFlowUtils.checkType(typeInfo.getType(), expression, context, typeInfo.getDataFlowInfo());
|
return DataFlowUtils.checkType(typeInfo, expression, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
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.context.ResolutionContext;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
|
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowValue;
|
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowValue;
|
||||||
@@ -140,6 +139,15 @@ public class DataFlowUtils {
|
|||||||
return JetTypeInfo.create(checkType(expressionType, expression, context), dataFlowInfo);
|
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
|
@Nullable
|
||||||
public static JetType checkType(@Nullable JetType expressionType, @NotNull JetExpression expression, @NotNull ResolutionContext context) {
|
public static JetType checkType(@Nullable JetType expressionType, @NotNull JetExpression expression, @NotNull ResolutionContext context) {
|
||||||
return checkType(expressionType, expression, context.expectedType, context.dataFlowInfo, context.trace);
|
return checkType(expressionType, expression, context.expectedType, context.dataFlowInfo, context.trace);
|
||||||
|
|||||||
Reference in New Issue
Block a user