Class TreeBuilder
java.lang.Object
org.checkerframework.javacutil.trees.TreeBuilder
- Direct Known Subclasses:
CFTreeBuilder
The TreeBuilder permits the creation of new AST Trees using the non-public Java compiler API
TreeMaker.
-
Field Summary
Modifier and TypeFieldDescriptionprotected final Elements
The javacElements
object.protected final ProcessingEnvironment
The javacProcessingEnvironment
protected final com.sun.tools.javac.code.Types
The internal javacTypes
object.protected final com.sun.tools.javac.tree.TreeMaker
For constructing treesprotected final Types
The javacTypes
object.protected final com.sun.tools.javac.util.Names
The javacNames
object.protected final com.sun.tools.javac.code.Symtab
The javacSymtab
object. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionbuildArrayAccess
(ExpressionTree array, ExpressionTree index) Builds an AST Tree to dereference an array.buildArrayLengthAccess
(ExpressionTree expression) Builds an AST Tree to dereference the length field of an array.buildAssignment
(ExpressionTree lhs, ExpressionTree rhs) Builds an AST Tree to assign an RHS expression to an LHS expression.buildAssignment
(VariableTree variable, ExpressionTree expr) Builds an AST Tree to assign an expression to a variable.buildBinary
(TypeMirror type, Tree.Kind op, ExpressionTree left, ExpressionTree right) Builds an AST Tree to perform a binary operation.buildClassUse
(Element elt) Builds an AST Tree to refer to a class name.buildCloseMethodAccess
(ExpressionTree autoCloseableExpr) Build aMemberSelectTree
for accessing theclose
method of an expression that implementsAutoCloseable
.buildHasNextMethodAccess
(ExpressionTree iteratorExpr) Builds an AST Tree to access the hasNext() method of an iterator.buildIteratorMethodAccess
(ExpressionTree iterableExpr) Builds an AST Tree to access the iterator() method of some iterable expression.buildLessThan
(ExpressionTree left, ExpressionTree right) Builds an AST Tree to compare two operands with less than.buildLiteral
(Object value) Builds an AST Tree representing a literal value of primitive or String type.buildMethodInvocation
(ExpressionTree methodExpr) Builds an AST Tree to call a method designated by the argument expression.buildMethodInvocation
(ExpressionTree methodExpr, ExpressionTree argExpr) Builds an AST Tree to call a method designated by methodExpr, with one argument designated by argExpr.buildNewArray
(TypeMirror componentType, List<ExpressionTree> elems) Builds an AST Tree to create a new array with initializers.buildNextMethodAccess
(ExpressionTree iteratorExpr) Builds an AST Tree to access the next() method of an iterator.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.buildTypeCast
(TypeMirror type, ExpressionTree expr) Builds an AST Tree to cast the type of an expression.buildValueOfMethodAccess
(Tree expr) Builds an AST Tree to access the valueOf() method of boxed type such as Short or Float.buildVariableDecl
(Tree type, String name, Element owner, ExpressionTree initializer) Builds an AST Tree to declare and initialize a variable.buildVariableDecl
(TypeMirror type, String name, Element owner, ExpressionTree initializer) Builds an AST Tree to declare and initialize a variable, with no modifiers.buildVariableUse
(VariableTree decl) Builds an AST Tree to refer to a variable.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.com.sun.tools.javac.tree.JCTree.Tag
Map public AST Tree.Kinds to internal javac JCTree.Tags.
-
Field Details
-
elements
The javacElements
object. -
modelTypes
The javacTypes
object. -
javacTypes
protected final com.sun.tools.javac.code.Types javacTypesThe internal javacTypes
object. -
maker
protected final com.sun.tools.javac.tree.TreeMaker makerFor constructing trees -
names
protected final com.sun.tools.javac.util.Names namesThe javacNames
object. -
symtab
protected final com.sun.tools.javac.code.Symtab symtabThe javacSymtab
object. -
env
The javacProcessingEnvironment
-
-
Constructor Details
-
TreeBuilder
Creates a new TreeBuilder.- Parameters:
env
- the javacProcessingEnvironment
-
-
Method Details
-
buildIteratorMethodAccess
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
Build aMemberSelectTree
for accessing theclose
method of an expression that implementsAutoCloseable
. This method is used when desugaring try-with-resources statements during CFG construction.- Parameters:
autoCloseableExpr
- the expression- Returns:
- the member select tree
-
buildHasNextMethodAccess
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
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
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
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 argumentargExpr
- 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 variablename
- the name of the variableowner
- the element containing the new symbolinitializer
- 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 Treename
- the name of the variableowner
- the element containing the new symbolinitializer
- the initializer expression- Returns:
- a VariableDeclTree declaring the new variable
-
buildVariableUse
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
Builds an AST Tree to cast the type of an expression.- Parameters:
type
- the type to cast toexpr
- the expression to be cast- Returns:
- a cast of the expression to the type
-
buildAssignment
Builds an AST Tree to assign an expression to a variable.- Parameters:
variable
- the declaration of the variable to assign toexpr
- the expression to be assigned- Returns:
- a statement assigning the expression to the variable
-
buildAssignment
Builds an AST Tree to assign an RHS expression to an LHS expression.- Parameters:
lhs
- the expression to be assigned torhs
- the expression to be assigned- Returns:
- a statement assigning the expression to the variable
-
buildLiteral
Builds an AST Tree representing a literal value of primitive or String type. -
buildLessThan
Builds an AST Tree to compare two operands with less than.- Parameters:
left
- the left operand treeright
- the right operand tree- Returns:
- a Tree representing "left < right"
-
buildArrayAccess
Builds an AST Tree to dereference an array.- Parameters:
array
- the array to dereferenceindex
- the index at which to dereference- Returns:
- a Tree representing the dereference
-
buildClassUse
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
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
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
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 operationop
- an AST Tree operatorleft
- the left operand treeright
- the right operand tree- Returns:
- a Tree representing "left < right"
-
buildNewArray
Builds an AST Tree to create a new array with initializers.- Parameters:
componentType
- component type of the new arrayelems
- expression trees of initializers- Returns:
- a NewArrayTree to create a new array with initializers
-