package org.checkerframework.dataflow.cfg.node; import java.util.Collection; import java.util.LinkedList; import javax.lang.model.type.TypeKind; import javax.lang.model.util.Types; import org.checkerframework.dataflow.util.HashCodeUtils; import com.sun.source.tree.CaseTree; import com.sun.source.tree.Tree.Kind; /** * A node for a case in a switch statement. Although * a case has no abstract value, it can imply facts about * the abstract values of its operands. * *
* case constant: ** * @author Stefan Heule * @author Charlie Garrett * */ public class CaseNode extends Node { protected CaseTree tree; protected Node switchExpr; protected Node caseExpr; public CaseNode(CaseTree tree, Node switchExpr, Node caseExpr, Types types) { super(types.getNoType(TypeKind.NONE)); assert tree.getKind().equals(Kind.CASE); this.tree = tree; this.switchExpr = switchExpr; this.caseExpr = caseExpr; } public Node getSwitchOperand() { return switchExpr; } public Node getCaseOperand() { return caseExpr; } @Override public CaseTree getTree() { return tree; } @Override public