Remove DataFlowInfo.CompositionOperator
It was used only in one place, which wouldn't suffer without it
This commit is contained in:
-23
@@ -26,30 +26,7 @@ import java.util.*;
|
|||||||
|
|
||||||
import static org.jetbrains.jet.lang.resolve.calls.autocasts.Nullability.NOT_NULL;
|
import static org.jetbrains.jet.lang.resolve.calls.autocasts.Nullability.NOT_NULL;
|
||||||
|
|
||||||
/**
|
|
||||||
* @author abreslav
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class DataFlowInfo {
|
public class DataFlowInfo {
|
||||||
|
|
||||||
public static abstract class CompositionOperator {
|
|
||||||
public abstract DataFlowInfo compose(DataFlowInfo a, DataFlowInfo b);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final CompositionOperator AND = new CompositionOperator() {
|
|
||||||
@Override
|
|
||||||
public DataFlowInfo compose(DataFlowInfo a, DataFlowInfo b) {
|
|
||||||
return a.and(b);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public static final CompositionOperator OR = new CompositionOperator() {
|
|
||||||
@Override
|
|
||||||
public DataFlowInfo compose(DataFlowInfo a, DataFlowInfo b) {
|
|
||||||
return a.or(b);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public static DataFlowInfo EMPTY = new DataFlowInfo(
|
public static DataFlowInfo EMPTY = new DataFlowInfo(
|
||||||
ImmutableMap.<DataFlowValue, Nullability>of(),
|
ImmutableMap.<DataFlowValue, Nullability>of(),
|
||||||
Multimaps.newListMultimap(Collections.<DataFlowValue, Collection<JetType>>emptyMap(), CommonSuppliers.<JetType>getArrayListSupplier()));
|
Multimaps.newListMultimap(Collections.<DataFlowValue, Collection<JetType>>emptyMap(), CommonSuppliers.<JetType>getArrayListSupplier()));
|
||||||
|
|||||||
@@ -59,19 +59,17 @@ public class DataFlowUtils {
|
|||||||
public void visitBinaryExpression(JetBinaryExpression expression) {
|
public void visitBinaryExpression(JetBinaryExpression expression) {
|
||||||
IElementType operationToken = expression.getOperationToken();
|
IElementType operationToken = expression.getOperationToken();
|
||||||
if (OperatorConventions.BOOLEAN_OPERATIONS.containsKey(operationToken)) {
|
if (OperatorConventions.BOOLEAN_OPERATIONS.containsKey(operationToken)) {
|
||||||
|
|
||||||
DataFlowInfo dataFlowInfo = extractDataFlowInfoFromCondition(expression.getLeft(), conditionValue, context);
|
DataFlowInfo dataFlowInfo = extractDataFlowInfoFromCondition(expression.getLeft(), conditionValue, context);
|
||||||
JetExpression expressionRight = expression.getRight();
|
JetExpression expressionRight = expression.getRight();
|
||||||
if (expressionRight != null) {
|
if (expressionRight != null) {
|
||||||
DataFlowInfo rightInfo = extractDataFlowInfoFromCondition(expressionRight, conditionValue, context);
|
DataFlowInfo rightInfo = extractDataFlowInfoFromCondition(expressionRight, conditionValue, context);
|
||||||
DataFlowInfo.CompositionOperator operator;
|
boolean and = operationToken == JetTokens.ANDAND;
|
||||||
if (operationToken == JetTokens.ANDAND) {
|
if (and == conditionValue) { // this means: and && conditionValue || !and && !conditionValue
|
||||||
operator = conditionValue ? DataFlowInfo.AND : DataFlowInfo.OR;
|
dataFlowInfo = dataFlowInfo.and(rightInfo);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
operator = conditionValue ? DataFlowInfo.OR : DataFlowInfo.AND;
|
dataFlowInfo = dataFlowInfo.or(rightInfo);
|
||||||
}
|
}
|
||||||
dataFlowInfo = operator.compose(dataFlowInfo, rightInfo);
|
|
||||||
}
|
}
|
||||||
result.set(dataFlowInfo);
|
result.set(dataFlowInfo);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user