Class CaseNode

java.lang.Object
org.checkerframework.dataflow.cfg.node.Node
org.checkerframework.dataflow.cfg.node.CaseNode
All Implemented Interfaces:
org.plumelib.util.UniqueId

public class CaseNode extends Node
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:
 
  • Field Details

    • tree

      protected final CaseTree tree
      The tree for this node.
    • selectorExprAssignment

      protected final AssignmentNode selectorExprAssignment
      The Node for the assignment of the switch selector expression to a synthetic local variable.
    • caseExprs

      protected final List<Node> caseExprs
      The case expressions to match the switch expression against: the operands of (possibly multiple) case labels.
    • guard

      protected final @Nullable Node guard
      The guard (the expression in the when clause) for this case.
  • Constructor Details

    • CaseNode

      public CaseNode(CaseTree tree, AssignmentNode selectorExprAssignment, List<Node> caseExprs, @Nullable Node guard, Types types)
      Create a new CaseNode.
      Parameters:
      tree - the tree for this node
      selectorExprAssignment - the Node for the assignment of the switch selector expression to a synthetic local variable
      caseExprs - the case expression(s) to match the switch expression against
      guard - the guard expression or null
      types - a factory of utility methods for operating on types
  • Method Details

    • getSwitchOperand

      public AssignmentNode getSwitchOperand()
      The Node for the assignment of the switch selector expression to a synthetic local variable. This is used to refine the type of the switch selector expression in a case block.
      Returns:
      the assignment of the switch selector expression to a synthetic local variable
    • getCaseOperands

      public List<Node> getCaseOperands()
      Gets the nodes corresponding to the case expressions. There can be multiple expressions since Java 12.
      Returns:
      the nodes corresponding to the (potentially multiple) case expressions
    • getGuard

      public @Nullable Node getGuard()
      Gets the node for the guard (the expression in the when clause).
      Returns:
      the node for the guard
    • getTree

      public CaseTree getTree()
      Description copied from class: Node
      Returns the Tree in the abstract syntax tree, or null if no corresponding tree exists. For instance, this is the case for an ImplicitThisNode.
      Specified by:
      getTree in class Node
      Returns:
      the corresponding Tree or null
    • accept

      public <R, P> R accept(NodeVisitor<R,P> visitor, P p)
      Description copied from class: Node
      Accept method of the visitor pattern.
      Specified by:
      accept in class Node
      Type Parameters:
      R - result type of the operation
      P - parameter type
      Parameters:
      visitor - the visitor to be applied to this node
      p - the parameter for this operation
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • equals

      public boolean equals(@Nullable Object obj)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • getOperands

      @SideEffectFree public Collection<Node> getOperands()
      Description copied from class: Node
      Returns a collection containing all of the operand Nodes of this Node.
      Specified by:
      getOperands in class Node
      Returns:
      a collection containing all of the operand Nodes of this Node