Class TreeUtilsAfterJava11.CaseUtils

java.lang.Object
org.checkerframework.javacutil.TreeUtilsAfterJava11.CaseUtils
Enclosing class:
TreeUtilsAfterJava11

public static class TreeUtilsAfterJava11.CaseUtils extends Object
Utility methods for accessing CaseTree methods.
  • Method Details

    • isCaseRule

      public static boolean isCaseRule(CaseTree caseTree)
      Returns true if this is a case rule (as opposed to a case statement).
      Parameters:
      caseTree - a case tree
      Returns:
      true if caseTree is a case rule
    • getBody

      public static @Nullable Tree getBody(CaseTree caseTree)
      Returns the body of the case statement if it is of the form case <expression> -> <expression>. This method should only be called if CaseTree.getStatements() returns null.
      Parameters:
      caseTree - the case expression to get the body from
      Returns:
      the body of the case tree
    • isDefaultCaseTree

      public static boolean isDefaultCaseTree(CaseTree caseTree)
      Returns true if this is the default case for a switch statement or expression. (Also, returns true if caseTree is case null, default:.)
      Parameters:
      caseTree - a case tree
      Returns:
      true if caseTree is the default case for a switch statement or expression
    • getLabels

      public static List<? extends Tree> getLabels(CaseTree caseTree)
      Get the list of labels from a case expression. For default, this is empty. For case null, default, the list contains null. Otherwise, in JDK 11 and earlier, this is a list of a single expression tree. In JDK 12+, the list may have multiple expression trees. In JDK 21+, the list might contain a single pattern tree.
      Parameters:
      caseTree - the case expression to get the labels from
      Returns:
      the list of case labels in the case
    • getExpressions

      public static List<? extends ExpressionTree> getExpressions(CaseTree caseTree)
      Get the list of expressions from a case expression. For the default case, this is empty. Otherwise, in JDK 11 and earlier, this is a singleton list. In JDK 12 onwards, there can be multiple expressions per case.
      Parameters:
      caseTree - the case expression to get the expressions from
      Returns:
      the list of expressions in the case
    • getGuard

      public static @Nullable ExpressionTree getGuard(CaseTree caseTree)
      Returns the guard, the expression after when, of caseTree. Wrapper around CaseTree#getGuard that can be called on any version of Java.
      Parameters:
      caseTree - the case tree
      Returns:
      the guard on the case tree or null if one does not exist