From 346cc1410ea2878d0f7bf079144cfe8365c10f8d Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Fri, 13 Jul 2012 15:33:56 +0400 Subject: [PATCH] Use OperatorConventions.BOOLEAN_OPERATIONS in frontend. --- .../types/expressions/BasicExpressionTypingVisitor.java | 2 +- .../jetbrains/jet/lang/types/expressions/DataFlowUtils.java | 6 +++--- .../jet/lang/types/expressions/OperatorConventions.java | 1 - 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java index c91711ef870..e04e102afe0 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java @@ -987,7 +987,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor { checkInExpression(expression, expression.getOperationReference(), expression.getLeft(), expression.getRight(), context); result = booleanType; } - else if (operationType == JetTokens.ANDAND || operationType == JetTokens.OROR) { + else if (OperatorConventions.BOOLEAN_OPERATIONS.containsKey(operationType)) { 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 diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/DataFlowUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/DataFlowUtils.java index 80c82d152f7..4871f39811d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/DataFlowUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/DataFlowUtils.java @@ -27,11 +27,11 @@ 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.DataFlowValueFactory; import org.jetbrains.jet.lang.resolve.scopes.WritableScope; -import org.jetbrains.jet.lang.types.JetTypeInfo; -import org.jetbrains.jet.lang.types.lang.JetStandardClasses; 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.lang.JetStandardClasses; import org.jetbrains.jet.lexer.JetTokens; import java.util.List; @@ -70,7 +70,7 @@ public class DataFlowUtils { @Override public void visitBinaryExpression(JetBinaryExpression expression) { IElementType operationToken = expression.getOperationToken(); - if (operationToken == JetTokens.ANDAND || operationToken == JetTokens.OROR) { + if (OperatorConventions.BOOLEAN_OPERATIONS.containsKey(operationToken)) { WritableScope actualScopeToExtend; if (operationToken == JetTokens.ANDAND) { actualScopeToExtend = conditionValue ? scopeToExtend : null; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/OperatorConventions.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/OperatorConventions.java index 33e0591edfd..abc0352350e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/OperatorConventions.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/OperatorConventions.java @@ -99,7 +99,6 @@ public class OperatorConventions { .put(JetTokens.MINUSEQ, JetTokens.MINUS) .build(); - //TODO: use these across frontend public static final ImmutableBiMap BOOLEAN_OPERATIONS = ImmutableBiMap.builder() .put(JetTokens.ANDAND, Name.identifier("and")) .put(JetTokens.OROR, Name.identifier("or"))