getType -> getTypeInfo
This commit is contained in:
+18
-16
@@ -146,7 +146,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
if (innerExpression == null) {
|
||||
return JetTypeInfo.create(null, context.dataFlowInfo);
|
||||
}
|
||||
JetTypeInfo typeInfo = facade.getType(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());
|
||||
}
|
||||
|
||||
@@ -213,14 +213,14 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
result = operationType == JetTokens.AS_SAFE ? TypeUtils.makeNullable(targetType) : targetType;
|
||||
}
|
||||
else {
|
||||
facade.getType(expression.getLeft(), context.replaceExpectedType(NO_EXPECTED_TYPE));
|
||||
facade.getTypeInfo(expression.getLeft(), context.replaceExpectedType(NO_EXPECTED_TYPE));
|
||||
}
|
||||
return DataFlowUtils.checkType(result, expression, context, context.dataFlowInfo);
|
||||
}
|
||||
|
||||
private boolean checkBinaryWithTypeRHS(JetBinaryExpressionWithTypeRHS expression, ExpressionTypingContext context, @NotNull JetType targetType) {
|
||||
|
||||
JetType actualType = facade.getType(expression.getLeft(), context).getType();
|
||||
JetType actualType = facade.getTypeInfo(expression.getLeft(), context).getType();
|
||||
if (actualType == null) return false;
|
||||
|
||||
JetSimpleNameExpression operationSign = expression.getOperationSign();
|
||||
@@ -532,7 +532,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
JetExpression selectorExpression = expression.getSelectorExpression();
|
||||
JetExpression receiverExpression = expression.getReceiverExpression();
|
||||
ExpressionTypingContext contextWithNoExpectedType = context.replaceExpectedType(NO_EXPECTED_TYPE);
|
||||
JetTypeInfo receiverTypeInfo = facade.getType(receiverExpression, contextWithNoExpectedType.replaceNamespacesAllowed(true));
|
||||
JetTypeInfo receiverTypeInfo = facade.getTypeInfo(receiverExpression, contextWithNoExpectedType.replaceNamespacesAllowed(true));
|
||||
JetType receiverType = receiverTypeInfo.getType();
|
||||
if (selectorExpression == null) return JetTypeInfo.create(null, context.dataFlowInfo);
|
||||
if (receiverType == null) receiverType = ErrorUtils.createErrorType("Type for " + expression.getText());
|
||||
@@ -764,7 +764,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
referencedName = referencedName == null ? " <?>" : referencedName;
|
||||
context.labelResolver.enterLabeledElement(new LabelName(referencedName.substring(1)), baseExpression);
|
||||
// TODO : Some processing for the label?
|
||||
JetTypeInfo typeInfo = facade.getType(baseExpression, context, isStatement);
|
||||
JetTypeInfo typeInfo = facade.getTypeInfo(baseExpression, context, isStatement);
|
||||
context.labelResolver.exitLabeledElement(baseExpression);
|
||||
return DataFlowUtils.checkType(typeInfo.getType(), expression, context, typeInfo.getDataFlowInfo());
|
||||
}
|
||||
@@ -772,7 +772,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
IElementType operationType = operationSign.getReferencedNameElementType();
|
||||
|
||||
// Type check the base expression
|
||||
JetTypeInfo typeInfo = facade.getType(baseExpression, context.replaceExpectedType(NO_EXPECTED_TYPE));
|
||||
JetTypeInfo typeInfo = facade.getTypeInfo(baseExpression, context.replaceExpectedType(NO_EXPECTED_TYPE));
|
||||
JetType type = typeInfo.getType();
|
||||
if (type == null) {
|
||||
return typeInfo;
|
||||
@@ -961,7 +961,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
result = booleanType;
|
||||
}
|
||||
else if (operationType == JetTokens.ANDAND || operationType == JetTokens.OROR) {
|
||||
JetType leftType = facade.getType(left, context.replaceScope(context.scope)).getType();
|
||||
JetType leftType = facade.getTypeInfo(left, context.replaceScope(context.scope)).getType();
|
||||
WritableScopeImpl leftScope = newWritableScopeImpl(context, "Left scope of && or ||");
|
||||
DataFlowInfo flowInfoLeft = DataFlowUtils.extractDataFlowInfoFromCondition(left, operationType == JetTokens.ANDAND, leftScope, context); // TODO: This gets computed twice: here and in extractDataFlowInfoFromCondition() for the whole condition
|
||||
WritableScopeImpl rightScope = operationType == JetTokens.ANDAND
|
||||
@@ -969,7 +969,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
: newWritableScopeImpl(context, "Right scope of && or ||");
|
||||
JetType rightType = right == null
|
||||
? null
|
||||
: facade.getType(right, context.replaceDataFlowInfo(flowInfoLeft).replaceScope(rightScope)).getType();
|
||||
: facade.getTypeInfo(right, context.replaceDataFlowInfo(flowInfoLeft).replaceScope(rightScope)).getType();
|
||||
if (leftType != null && !isBoolean(leftType)) {
|
||||
context.trace.report(TYPE_MISMATCH.on(left, booleanType, leftType));
|
||||
}
|
||||
@@ -979,17 +979,19 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
result = booleanType;
|
||||
}
|
||||
else if (operationType == JetTokens.ELVIS) {
|
||||
JetType leftType = facade.getType(left, context.replaceScope(context.scope)).getType();
|
||||
JetType leftType = facade.getTypeInfo(left, context.replaceScope(context.scope)).getType();
|
||||
JetType rightType = right == null
|
||||
? null
|
||||
: facade.getType(right, contextWithExpectedType.replaceScope(context.scope)).getType();
|
||||
: facade.getTypeInfo(right, contextWithExpectedType.replaceScope(context.scope)).getType();
|
||||
if (leftType != null) {
|
||||
if (!leftType.isNullable()) {
|
||||
context.trace.report(USELESS_ELVIS.on(left, leftType));
|
||||
}
|
||||
if (rightType != null) {
|
||||
DataFlowUtils.checkType(TypeUtils.makeNullableAsSpecified(leftType, rightType.isNullable()), left, contextWithExpectedType);
|
||||
return JetTypeInfo.create(TypeUtils.makeNullableAsSpecified(CommonSupertypes.commonSupertype(Arrays.asList(leftType, rightType)), rightType.isNullable()), context.dataFlowInfo);
|
||||
return JetTypeInfo.create(TypeUtils.makeNullableAsSpecified(
|
||||
CommonSupertypes.commonSupertype(Arrays.asList(leftType, rightType)), rightType.isNullable()),
|
||||
context.dataFlowInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1018,9 +1020,9 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
JetExpression right = expression.getRight();
|
||||
|
||||
// TODO : duplicated effort for == and !=
|
||||
JetType leftType = facade.getType(left, context.replaceScope(context.scope)).getType();
|
||||
JetType leftType = facade.getTypeInfo(left, context.replaceScope(context.scope)).getType();
|
||||
if (leftType != null && right != null) {
|
||||
JetType rightType = facade.getType(right, context.replaceScope(context.scope)).getType();
|
||||
JetType rightType = facade.getTypeInfo(right, context.replaceScope(context.scope)).getType();
|
||||
|
||||
if (rightType != null) {
|
||||
if (TypeUtils.isIntersectionEmpty(leftType, rightType)) {
|
||||
@@ -1103,7 +1105,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
public void visitStringTemplateEntryWithExpression(JetStringTemplateEntryWithExpression entry) {
|
||||
JetExpression entryExpression = entry.getExpression();
|
||||
if (entryExpression != null) {
|
||||
facade.getType(entryExpression, context);
|
||||
facade.getTypeInfo(entryExpression, context);
|
||||
}
|
||||
value[0] = CompileTimeConstantResolver.OUT_OF_RANGE;
|
||||
}
|
||||
@@ -1140,7 +1142,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
if (baseExpression == null) {
|
||||
return JetTypeInfo.create(null, data.dataFlowInfo);
|
||||
}
|
||||
return facade.getType(baseExpression, data);
|
||||
return facade.getTypeInfo(baseExpression, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1165,7 +1167,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
@NotNull ExpressionTypingContext context,
|
||||
@NotNull BindingTrace traceForResolveResult,
|
||||
boolean isGet) {
|
||||
JetType arrayType = facade.getType(arrayAccessExpression.getArrayExpression(), context).getType();
|
||||
JetType arrayType = facade.getTypeInfo(arrayAccessExpression.getArrayExpression(), context).getType();
|
||||
if (arrayType == null) return null;
|
||||
|
||||
ExpressionReceiver receiver = new ExpressionReceiver(arrayAccessExpression.getArrayExpression(), arrayType);
|
||||
|
||||
+10
-8
@@ -65,7 +65,7 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
|
||||
|
||||
private void checkCondition(@NotNull JetScope scope, @Nullable JetExpression condition, ExpressionTypingContext context) {
|
||||
if (condition != null) {
|
||||
JetType conditionType = facade.getType(condition, context.replaceScope(scope)).getType();
|
||||
JetType conditionType = facade.getTypeInfo(condition, context.replaceScope(scope)).getType();
|
||||
|
||||
if (conditionType != null && !isBoolean(conditionType)) {
|
||||
context.trace.report(TYPE_MISMATCH_IN_CONDITION.on(condition, conditionType));
|
||||
@@ -100,7 +100,9 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
|
||||
if (type != null && JetStandardClasses.isNothing(type)) {
|
||||
facade.setResultingDataFlowInfo(elseInfo);
|
||||
}
|
||||
return DataFlowUtils.checkImplicitCast(DataFlowUtils.checkType(JetStandardClasses.getUnitType(), expression, contextWithExpectedType), expression, contextWithExpectedType, isStatement, context.dataFlowInfo);
|
||||
return DataFlowUtils.checkImplicitCast(
|
||||
DataFlowUtils.checkType(JetStandardClasses.getUnitType(), expression, contextWithExpectedType), expression,
|
||||
contextWithExpectedType, isStatement, context.dataFlowInfo);
|
||||
}
|
||||
return JetTypeInfo.create(null, context.dataFlowInfo);
|
||||
}
|
||||
@@ -205,7 +207,7 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
|
||||
context.trace.record(BindingContext.BLOCK, function);
|
||||
}
|
||||
else {
|
||||
facade.getType(body, context.replaceScope(context.scope));
|
||||
facade.getTypeInfo(body, context.replaceScope(context.scope));
|
||||
}
|
||||
}
|
||||
else if (body != null) {
|
||||
@@ -419,7 +421,7 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
|
||||
if (catchBody != null) {
|
||||
WritableScope catchScope = newWritableScopeImpl(context, "Catch scope");
|
||||
catchScope.addVariableDescriptor(variableDescriptor);
|
||||
JetType type = facade.getType(catchBody, context.replaceScope(catchScope)).getType();
|
||||
JetType type = facade.getTypeInfo(catchBody, context.replaceScope(catchScope)).getType();
|
||||
if (type != null) {
|
||||
types.add(type);
|
||||
}
|
||||
@@ -427,9 +429,9 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
|
||||
}
|
||||
}
|
||||
if (finallyBlock != null) {
|
||||
facade.getType(finallyBlock.getFinalExpression(), context.replaceExpectedType(TypeUtils.NO_EXPECTED_TYPE));
|
||||
facade.getTypeInfo(finallyBlock.getFinalExpression(), context.replaceExpectedType(TypeUtils.NO_EXPECTED_TYPE));
|
||||
}
|
||||
JetType type = facade.getType(tryBlock, context).getType();
|
||||
JetType type = facade.getTypeInfo(tryBlock, context).getType();
|
||||
if (type != null) {
|
||||
types.add(type);
|
||||
}
|
||||
@@ -446,7 +448,7 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
|
||||
JetExpression thrownExpression = expression.getThrownExpression();
|
||||
if (thrownExpression != null) {
|
||||
JetType throwableType = JetStandardLibrary.getInstance().getThrowable().getDefaultType();
|
||||
facade.getType(thrownExpression, context.replaceExpectedType(throwableType).replaceScope(context.scope));
|
||||
facade.getTypeInfo(thrownExpression, context.replaceExpectedType(throwableType).replaceScope(context.scope));
|
||||
}
|
||||
return DataFlowUtils.checkType(JetStandardClasses.getNothingType(), expression, context, context.dataFlowInfo);
|
||||
}
|
||||
@@ -501,7 +503,7 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
|
||||
}
|
||||
}
|
||||
if (returnedExpression != null) {
|
||||
facade.getType(returnedExpression, context.replaceExpectedType(expectedType).replaceScope(context.scope));
|
||||
facade.getTypeInfo(returnedExpression, context.replaceExpectedType(expectedType).replaceScope(context.scope));
|
||||
}
|
||||
else {
|
||||
if (expectedType != TypeUtils.NO_EXPECTED_TYPE && expectedType != null && !JetStandardClasses.isUnit(expectedType)) {
|
||||
|
||||
+3
-3
@@ -26,11 +26,11 @@ import org.jetbrains.jet.lang.types.JetTypeInfo;
|
||||
*/
|
||||
public interface ExpressionTypingFacade {
|
||||
@NotNull
|
||||
JetTypeInfo safeGetType(@NotNull JetExpression expression, ExpressionTypingContext context);
|
||||
JetTypeInfo safeGetTypeInfo(@NotNull JetExpression expression, ExpressionTypingContext context);
|
||||
|
||||
@NotNull
|
||||
JetTypeInfo getType(@NotNull JetExpression expression, ExpressionTypingContext context);
|
||||
JetTypeInfo getTypeInfo(@NotNull JetExpression expression, ExpressionTypingContext context);
|
||||
|
||||
@NotNull
|
||||
JetTypeInfo getType(@NotNull JetExpression expression, ExpressionTypingContext context, boolean isStatement);
|
||||
JetTypeInfo getTypeInfo(@NotNull JetExpression expression, ExpressionTypingContext context, boolean isStatement);
|
||||
}
|
||||
|
||||
+9
-9
@@ -120,13 +120,13 @@ public class ExpressionTypingServices {
|
||||
ExpressionTypingContext context = ExpressionTypingContext.newContext(
|
||||
this, trace, scope, dataFlowInfo, expectedType, false
|
||||
);
|
||||
return expressionTypingFacade.getType(expression, context).getType();
|
||||
return expressionTypingFacade.getTypeInfo(expression, context).getType();
|
||||
}
|
||||
|
||||
public JetType getTypeWithNamespaces(@NotNull final JetScope scope, @NotNull JetExpression expression, @NotNull BindingTrace trace) {
|
||||
ExpressionTypingContext context = ExpressionTypingContext.newContext(
|
||||
this, trace, scope, DataFlowInfo.EMPTY, NO_EXPECTED_TYPE, true);
|
||||
return expressionTypingFacade.getType(expression, context).getType();
|
||||
return expressionTypingFacade.getTypeInfo(expression, context).getType();
|
||||
// return ((ExpressionTypingContext) ExpressionTyperVisitorWithNamespaces).INSTANCE.getType(expression, ExpressionTypingContext.newRootContext(semanticServices, trace, scope, DataFlowInfo.getEmpty(), TypeUtils.NO_EXPECTED_TYPE, TypeUtils.NO_EXPECTED_TYPE));
|
||||
}
|
||||
|
||||
@@ -171,7 +171,7 @@ public class ExpressionTypingServices {
|
||||
getBlockReturnedType(newContext.scope, blockExpression, CoercionStrategy.COERCION_TO_UNIT, context, trace);
|
||||
}
|
||||
else {
|
||||
expressionTypingFacade.getType(bodyExpression, newContext, !blockBody);
|
||||
expressionTypingFacade.getTypeInfo(bodyExpression, newContext, !blockBody);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -215,7 +215,7 @@ public class ExpressionTypingServices {
|
||||
JetExpression bodyExpression = function.getBodyExpression();
|
||||
assert bodyExpression != null;
|
||||
JetScope functionInnerScope = FunctionDescriptorUtil.getFunctionInnerScope(outerScope, functionDescriptor, trace);
|
||||
expressionTypingFacade.getType(bodyExpression, ExpressionTypingContext.newContext(
|
||||
expressionTypingFacade.getTypeInfo(bodyExpression, ExpressionTypingContext.newContext(
|
||||
this,
|
||||
trace, functionInnerScope, DataFlowInfo.EMPTY, NO_EXPECTED_TYPE, false), !function.hasBlockBody());
|
||||
//todo function literals
|
||||
@@ -285,13 +285,13 @@ public class ExpressionTypingServices {
|
||||
final boolean[] mismatch = new boolean[1];
|
||||
ObservableBindingTrace errorInterceptingTrace = makeTraceInterceptingTypeMismatch(temporaryTraceExpectingUnit, statementExpression, mismatch);
|
||||
newContext = createContext(newContext, errorInterceptingTrace, scope, newContext.dataFlowInfo, context.expectedType);
|
||||
result = blockLevelVisitor.getType(statementExpression, newContext, true);
|
||||
result = blockLevelVisitor.getTypeInfo(statementExpression, newContext, true);
|
||||
if (mismatch[0]) {
|
||||
TemporaryBindingTrace temporaryTraceNoExpectedType = TemporaryBindingTrace.create(trace);
|
||||
mismatch[0] = false;
|
||||
ObservableBindingTrace interceptingTrace = makeTraceInterceptingTypeMismatch(temporaryTraceNoExpectedType, statementExpression, mismatch);
|
||||
newContext = createContext(newContext, interceptingTrace, scope, newContext.dataFlowInfo, NO_EXPECTED_TYPE);
|
||||
result = blockLevelVisitor.getType(statementExpression, newContext, true);
|
||||
result = blockLevelVisitor.getTypeInfo(statementExpression, newContext, true);
|
||||
if (mismatch[0]) {
|
||||
temporaryTraceExpectingUnit.commit();
|
||||
}
|
||||
@@ -305,11 +305,11 @@ public class ExpressionTypingServices {
|
||||
}
|
||||
else {
|
||||
newContext = createContext(newContext, trace, scope, newContext.dataFlowInfo, context.expectedType);
|
||||
result = blockLevelVisitor.getType(statementExpression, newContext, true);
|
||||
result = blockLevelVisitor.getTypeInfo(statementExpression, newContext, true);
|
||||
}
|
||||
}
|
||||
else {
|
||||
result = blockLevelVisitor.getType(statementExpression, newContext, true);
|
||||
result = blockLevelVisitor.getTypeInfo(statementExpression, newContext, true);
|
||||
if (coercionStrategyForLastExpression == CoercionStrategy.COERCION_TO_UNIT) {
|
||||
boolean mightBeUnit = false;
|
||||
if (statementExpression instanceof JetDeclaration) {
|
||||
@@ -331,7 +331,7 @@ public class ExpressionTypingServices {
|
||||
}
|
||||
}
|
||||
else {
|
||||
result = blockLevelVisitor.getType(statementExpression, newContext, true);
|
||||
result = blockLevelVisitor.getTypeInfo(statementExpression, newContext, true);
|
||||
}
|
||||
|
||||
DataFlowInfo newDataFlowInfo = blockLevelVisitor.getResultingDataFlowInfo();
|
||||
|
||||
+2
-2
@@ -71,12 +71,12 @@ public class ExpressionTypingUtils {
|
||||
|
||||
@Nullable
|
||||
protected static ExpressionReceiver getExpressionReceiver(@NotNull ExpressionTypingFacade facade, @NotNull JetExpression expression, ExpressionTypingContext context) {
|
||||
return getExpressionReceiver(expression, facade.getType(expression, context).getType());
|
||||
return getExpressionReceiver(expression, facade.getTypeInfo(expression, context).getType());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected static ExpressionReceiver safeGetExpressionReceiver(@NotNull ExpressionTypingFacade facade, @NotNull JetExpression expression, ExpressionTypingContext context) {
|
||||
return new ExpressionReceiver(expression, facade.safeGetType(expression, context).getType());
|
||||
return new ExpressionReceiver(expression, facade.safeGetTypeInfo(expression, context).getType());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+13
-11
@@ -92,8 +92,8 @@ public class ExpressionTypingVisitorDispatcher extends JetVisitor<JetTypeInfo, E
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public final JetTypeInfo safeGetType(@NotNull JetExpression expression, ExpressionTypingContext context) {
|
||||
JetTypeInfo typeInfo = getType(expression, context);
|
||||
public final JetTypeInfo safeGetTypeInfo(@NotNull JetExpression expression, ExpressionTypingContext context) {
|
||||
JetTypeInfo typeInfo = getTypeInfo(expression, context);
|
||||
if (typeInfo.getType() != null) {
|
||||
return typeInfo;
|
||||
}
|
||||
@@ -102,17 +102,17 @@ public class ExpressionTypingVisitorDispatcher extends JetVisitor<JetTypeInfo, E
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public final JetTypeInfo getType(@NotNull JetExpression expression, ExpressionTypingContext context) {
|
||||
return getType(expression, context, this);
|
||||
public final JetTypeInfo getTypeInfo(@NotNull JetExpression expression, ExpressionTypingContext context) {
|
||||
return getTypeInfo(expression, context, this);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public final JetTypeInfo getType(@NotNull JetExpression expression, ExpressionTypingContext context, boolean isStatement) {
|
||||
if (!isStatement) return getType(expression, context);
|
||||
public final JetTypeInfo getTypeInfo(@NotNull JetExpression expression, ExpressionTypingContext context, boolean isStatement) {
|
||||
if (!isStatement) return getTypeInfo(expression, context);
|
||||
if (statements != null) {
|
||||
return getType(expression, context, statements);
|
||||
return getTypeInfo(expression, context, statements);
|
||||
}
|
||||
return getType(expression, context, createStatementVisitor(context));
|
||||
return getTypeInfo(expression, context, createStatementVisitor(context));
|
||||
}
|
||||
|
||||
private ExpressionTypingVisitorForStatements createStatementVisitor(ExpressionTypingContext context) {
|
||||
@@ -125,16 +125,18 @@ public class ExpressionTypingVisitorDispatcher extends JetVisitor<JetTypeInfo, E
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JetTypeInfo getType(@NotNull JetExpression expression, ExpressionTypingContext context, JetVisitor<JetTypeInfo, ExpressionTypingContext> visitor) {
|
||||
private JetTypeInfo getTypeInfo(@NotNull JetExpression expression, ExpressionTypingContext context, JetVisitor<JetTypeInfo, ExpressionTypingContext> visitor) {
|
||||
if (context.trace.get(BindingContext.PROCESSED, expression)) {
|
||||
return JetTypeInfo.create(context.trace.getBindingContext().get(BindingContext.EXPRESSION_TYPE, expression), context.dataFlowInfo);
|
||||
return JetTypeInfo.create(context.trace.getBindingContext().get(BindingContext.EXPRESSION_TYPE, expression),
|
||||
context.dataFlowInfo);
|
||||
}
|
||||
JetTypeInfo result;
|
||||
try {
|
||||
result = expression.accept(visitor, context);
|
||||
// Some recursive definitions (object expressions) must put their types in the cache manually:
|
||||
if (context.trace.get(BindingContext.PROCESSED, expression)) {
|
||||
return JetTypeInfo.create(context.trace.getBindingContext().get(BindingContext.EXPRESSION_TYPE, expression), result.getDataFlowInfo());
|
||||
return JetTypeInfo.create(context.trace.getBindingContext().get(BindingContext.EXPRESSION_TYPE, expression),
|
||||
result.getDataFlowInfo());
|
||||
}
|
||||
|
||||
if (result.getType() instanceof DeferredType) {
|
||||
|
||||
+8
-8
@@ -112,7 +112,7 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito
|
||||
JetExpression initializer = property.getInitializer();
|
||||
if (property.getPropertyTypeRef() != null && initializer != null) {
|
||||
JetType outType = propertyDescriptor.getType();
|
||||
JetType initializerType = facade.getType(initializer, context.replaceExpectedType(outType).replaceScope(scope)).getType();
|
||||
JetType initializerType = facade.getTypeInfo(initializer, context.replaceExpectedType(outType).replaceScope(scope)).getType();
|
||||
}
|
||||
|
||||
{
|
||||
@@ -169,7 +169,7 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito
|
||||
result = visitAssignmentOperation(expression, context);
|
||||
}
|
||||
else {
|
||||
return facade.getType(expression, context);
|
||||
return facade.getTypeInfo(expression, context);
|
||||
}
|
||||
return DataFlowUtils.checkType(result, expression, context, context.dataFlowInfo);
|
||||
}
|
||||
@@ -187,9 +187,9 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito
|
||||
JetExpression left = JetPsiUtil.deparenthesize(expression.getLeft());
|
||||
if (left == null) return null;
|
||||
|
||||
JetType leftType = facade.getType(left, context).getType();
|
||||
JetType leftType = facade.getTypeInfo(left, context).getType();
|
||||
if (leftType == null) {
|
||||
facade.getType(right, context);
|
||||
facade.getTypeInfo(right, context);
|
||||
context.trace.report(UNRESOLVED_REFERENCE.on(operationSign));
|
||||
temporaryBindingTrace.commit();
|
||||
return null;
|
||||
@@ -217,7 +217,7 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito
|
||||
for (ResolvedCall<? extends FunctionDescriptor> call : ambiguityResolutionResults.getResultingCalls()) {
|
||||
descriptors.add(call.getResultingDescriptor());
|
||||
}
|
||||
facade.getType(right, context);
|
||||
facade.getTypeInfo(right, context);
|
||||
context.trace.record(AMBIGUOUS_REFERENCE_TARGET, operationSign, descriptors);
|
||||
}
|
||||
else if (assignmentOperationType != null) {
|
||||
@@ -250,9 +250,9 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito
|
||||
basic.checkLValue(context.trace, arrayAccessExpression);
|
||||
return checkAssignmentType(assignmentType, expression, contextWithExpectedType);
|
||||
}
|
||||
JetType leftType = facade.getType(expression.getLeft(), context.replaceScope(scope)).getType();
|
||||
JetType leftType = facade.getTypeInfo(expression.getLeft(), context.replaceScope(scope)).getType();
|
||||
if (right != null) {
|
||||
JetType rightType = facade.getType(right, context.replaceExpectedType(leftType).replaceScope(scope)).getType();
|
||||
JetType rightType = facade.getTypeInfo(right, context.replaceExpectedType(leftType).replaceScope(scope)).getType();
|
||||
}
|
||||
if (leftType != null) { //if leftType == null, some another error has been generated
|
||||
basic.checkLValue(context.trace, expression.getLeft());
|
||||
@@ -263,7 +263,7 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito
|
||||
|
||||
@Override
|
||||
public JetTypeInfo visitExpression(JetExpression expression, ExpressionTypingContext context) {
|
||||
return facade.getType(expression, context);
|
||||
return facade.getTypeInfo(expression, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
-3
@@ -55,7 +55,7 @@ public class PatternMatchingTypingVisitor extends ExpressionTypingVisitor {
|
||||
public JetTypeInfo visitIsExpression(JetIsExpression expression, ExpressionTypingContext contextWithExpectedType) {
|
||||
ExpressionTypingContext context = contextWithExpectedType.replaceExpectedType(TypeUtils.NO_EXPECTED_TYPE);
|
||||
JetExpression leftHandSide = expression.getLeftHandSide();
|
||||
JetType knownType = facade.safeGetType(leftHandSide, context.replaceScope(context.scope)).getType();
|
||||
JetType knownType = facade.safeGetTypeInfo(leftHandSide, context.replaceScope(context.scope)).getType();
|
||||
JetPattern pattern = expression.getPattern();
|
||||
DataFlowInfo newDataFlowInfo = context.dataFlowInfo;
|
||||
if (pattern != null) {
|
||||
@@ -146,7 +146,7 @@ public class PatternMatchingTypingVisitor extends ExpressionTypingVisitor {
|
||||
if (rangeExpression == null) return;
|
||||
if (expectedCondition) {
|
||||
context.trace.report(EXPECTED_CONDITION.on(condition));
|
||||
facade.getType(rangeExpression, context);
|
||||
facade.getTypeInfo(rangeExpression, context);
|
||||
return;
|
||||
}
|
||||
if (!facade.checkInExpression(condition, condition.getOperationReference(), subjectExpression, rangeExpression, context)) {
|
||||
@@ -246,7 +246,7 @@ public class PatternMatchingTypingVisitor extends ExpressionTypingVisitor {
|
||||
public void visitExpressionPattern(JetExpressionPattern pattern) {
|
||||
JetExpression expression = pattern.getExpression();
|
||||
if (expression == null) return;
|
||||
JetType type = facade.getType(expression, context.replaceScope(scopeToExtend)).getType();
|
||||
JetType type = facade.getTypeInfo(expression, context.replaceScope(scopeToExtend)).getType();
|
||||
if (conditionExpected) {
|
||||
JetType booleanType = JetStandardLibrary.getInstance().getBooleanType();
|
||||
if (type != null && !JetTypeChecker.INSTANCE.equalTypes(booleanType, type)) {
|
||||
|
||||
Reference in New Issue
Block a user