Class TreeBuilder

java.lang.Object
org.checkerframework.javacutil.trees.TreeBuilder
Direct Known Subclasses:
CFTreeBuilder

public class TreeBuilder extends Object
The TreeBuilder permits the creation of new AST Trees using the non-public Java compiler API TreeMaker.
  • Field Details

    • elements

      protected final Elements elements
      The javac Elements object.
    • modelTypes

      protected final Types modelTypes
      The javac Types object.
    • javacTypes

      protected final com.sun.tools.javac.code.Types javacTypes
      The internal javac Types object.
    • maker

      protected final com.sun.tools.javac.tree.TreeMaker maker
      For constructing trees
    • names

      protected final com.sun.tools.javac.util.Names names
      The javac Names object.
    • symtab

      protected final com.sun.tools.javac.code.Symtab symtab
      The javac Symtab object.
    • env

      protected final ProcessingEnvironment env
  • Constructor Details

  • Method Details

    • buildIteratorMethodAccess

      public MemberSelectTree buildIteratorMethodAccess(ExpressionTree iterableExpr)
      Builds an AST Tree to access the iterator() method of some iterable expression.
      Parameters:
      iterableExpr - an expression whose type is a subtype of Iterable
      Returns:
      a MemberSelectTree that accesses the iterator() method of the expression
    • buildCloseMethodAccess

      public MemberSelectTree buildCloseMethodAccess(ExpressionTree autoCloseableExpr)
      Build a MemberSelectTree for accessing the close method of an expression that implements AutoCloseable. This method is used when desugaring try-with-resources statements during CFG construction.
      Parameters:
      autoCloseableExpr - the expression
      Returns:
      the member select tree
    • buildHasNextMethodAccess

      public MemberSelectTree buildHasNextMethodAccess(ExpressionTree iteratorExpr)
      Builds an AST Tree to access the hasNext() method of an iterator.
      Parameters:
      iteratorExpr - an expression whose type is a subtype of Iterator
      Returns:
      a MemberSelectTree that accesses the hasNext() method of the expression
    • buildNextMethodAccess

      public MemberSelectTree buildNextMethodAccess(ExpressionTree iteratorExpr)
      Builds an AST Tree to access the next() method of an iterator.
      Parameters:
      iteratorExpr - an expression whose type is a subtype of Iterator
      Returns:
      a MemberSelectTree that accesses the next() method of the expression
    • buildArrayLengthAccess

      public MemberSelectTree buildArrayLengthAccess(ExpressionTree expression)
      Builds an AST Tree to dereference the length field of an array.
      Parameters:
      expression - the array expression whose length is being accessed
      Returns:
      a MemberSelectTree to dereference the length of the array
    • buildMethodInvocation

      public MethodInvocationTree buildMethodInvocation(ExpressionTree methodExpr)
      Builds an AST Tree to call a method designated by the argument expression.
      Parameters:
      methodExpr - an expression denoting a method with no arguments
      Returns:
      a MethodInvocationTree to call the argument method
    • buildMethodInvocation

      public MethodInvocationTree buildMethodInvocation(ExpressionTree methodExpr, ExpressionTree argExpr)
      Builds an AST Tree to call a method designated by methodExpr, with one argument designated by argExpr.
      Parameters:
      methodExpr - an expression denoting a method with one argument
      argExpr - an expression denoting an argument to the method
      Returns:
      a MethodInvocationTree to call the argument method
    • buildVariableDecl

      public VariableTree buildVariableDecl(TypeMirror type, String name, Element owner, ExpressionTree initializer)
      Builds an AST Tree to declare and initialize a variable, with no modifiers.
      Parameters:
      type - the type of the variable
      name - the name of the variable
      owner - the element containing the new symbol
      initializer - the initializer expression
      Returns:
      a VariableDeclTree declaring the new variable
    • buildVariableDecl

      public VariableTree buildVariableDecl(Tree type, String name, Element owner, ExpressionTree initializer)
      Builds an AST Tree to declare and initialize a variable. The type of the variable is specified by a Tree.
      Parameters:
      type - the type of the variable, as a Tree
      name - the name of the variable
      owner - the element containing the new symbol
      initializer - the initializer expression
      Returns:
      a VariableDeclTree declaring the new variable
    • buildVariableUse

      public IdentifierTree buildVariableUse(VariableTree decl)
      Builds an AST Tree to refer to a variable.
      Parameters:
      decl - the declaration of the variable
      Returns:
      an IdentifierTree to refer to the variable
    • buildTypeCast

      public TypeCastTree buildTypeCast(TypeMirror type, ExpressionTree expr)
      Builds an AST Tree to cast the type of an expression.
      Parameters:
      type - the type to cast to
      expr - the expression to be cast
      Returns:
      a cast of the expression to the type
    • buildAssignment

      public StatementTree buildAssignment(VariableTree variable, ExpressionTree expr)
      Builds an AST Tree to assign an expression to a variable.
      Parameters:
      variable - the declaration of the variable to assign to
      expr - the expression to be assigned
      Returns:
      a statement assigning the expression to the variable
    • buildAssignment

      public AssignmentTree buildAssignment(ExpressionTree lhs, ExpressionTree rhs)
      Builds an AST Tree to assign an RHS expression to an LHS expression.
      Parameters:
      lhs - the expression to be assigned to
      rhs - the expression to be assigned
      Returns:
      a statement assigning the expression to the variable
    • buildLiteral

      public LiteralTree buildLiteral(Object value)
      Builds an AST Tree representing a literal value of primitive or String type.
    • buildLessThan

      public BinaryTree buildLessThan(ExpressionTree left, ExpressionTree right)
      Builds an AST Tree to compare two operands with less than.
      Parameters:
      left - the left operand tree
      right - the right operand tree
      Returns:
      a Tree representing "left < right"
    • buildArrayAccess

      public ArrayAccessTree buildArrayAccess(ExpressionTree array, ExpressionTree index)
      Builds an AST Tree to dereference an array.
      Parameters:
      array - the array to dereference
      index - the index at which to dereference
      Returns:
      a Tree representing the dereference
    • buildClassUse

      public IdentifierTree buildClassUse(Element elt)
      Builds an AST Tree to refer to a class name.
      Parameters:
      elt - an element representing the class
      Returns:
      an IdentifierTree referring to the class
    • buildValueOfMethodAccess

      public MemberSelectTree buildValueOfMethodAccess(Tree expr)
      Builds an AST Tree to access the valueOf() method of boxed type such as Short or Float.
      Parameters:
      expr - an expression whose type is a boxed type
      Returns:
      a MemberSelectTree that accesses the valueOf() method of the expression
    • getValueOfMethod

      public static com.sun.tools.javac.code.Symbol.MethodSymbol getValueOfMethod(ProcessingEnvironment env, TypeMirror boxedType)
      Returns the valueOf method of a boxed type such as Short or Float.
    • buildPrimValueMethodAccess

      public MemberSelectTree buildPrimValueMethodAccess(Tree expr)
      Builds an AST Tree to access the *Value() method of a boxed type such as Short or Float, where * is the corresponding primitive type (i.e. shortValue or floatValue).
      Parameters:
      expr - an expression whose type is a boxed type
      Returns:
      a MemberSelectTree that accesses the *Value() method of the expression
    • kindToTag

      public com.sun.tools.javac.tree.JCTree.Tag kindToTag(Tree.Kind kind)
      Map public AST Tree.Kinds to internal javac JCTree.Tags.
    • buildBinary

      public BinaryTree buildBinary(TypeMirror type, Tree.Kind op, ExpressionTree left, ExpressionTree right)
      Builds an AST Tree to perform a binary operation.
      Parameters:
      type - result type of the operation
      op - an AST Tree operator
      left - the left operand tree
      right - the right operand tree
      Returns:
      a Tree representing "left < right"
    • buildNewArray

      public NewArrayTree buildNewArray(TypeMirror componentType, List<ExpressionTree> elems)
      Builds an AST Tree to create a new array with initializers.
      Parameters:
      componentType - component type of the new array
      elems - expression trees of initializers
      Returns:
      a NewArrayTree to create a new array with initializers