package edu.ucsd.arcum.interpreter.ast.expressions; import java.util.Set; import edu.ucsd.arcum.exceptions.SourceLocation; public class BooleanConjunction extends VariadicOperator { public BooleanConjunction(SourceLocation location) { super(location); } public static BooleanConjunction conjoin(ConstraintExpression lhs, ConstraintExpression rhs) { SourceLocation lhsPos = lhs.getPosition(); SourceLocation rhsPos = rhs.getPosition(); SourceLocation location; if (lhsPos.isGenerated()) { location = rhsPos; } else { location = lhsPos.extendedTo(rhsPos); } BooleanConjunction result = new BooleanConjunction(location); result.addClause(lhs); result.addClause(rhs); return result; } @Override public String getOperatorLexeme() { return "&&\n "; } @Override public Set<String> findAllTraitDependencies() { return flattenFindAllTraitDependencies(this.clauses); } @Override public Set<String> findNonMonotonicDependencies() { return flattenFindNonMonotonicDependencies(this.clauses); } }