Class TreeBuilder
- java.lang.Object
-
- org.checkerframework.javacutil.trees.TreeBuilder
-
- Direct Known Subclasses:
CFTreeBuilder
public class TreeBuilder extends java.lang.Object
The TreeBuilder permits the creation of new AST Trees using the non-public Java compiler API TreeMaker.
-
-
Field Summary
Fields Modifier and Type Field Description protected javax.lang.model.util.Elements
elements
protected javax.annotation.processing.ProcessingEnvironment
env
protected com.sun.tools.javac.code.Types
javacTypes
protected com.sun.tools.javac.tree.TreeMaker
maker
protected javax.lang.model.util.Types
modelTypes
protected com.sun.tools.javac.util.Names
names
protected com.sun.tools.javac.code.Symtab
symtab
-
Constructor Summary
Constructors Constructor Description TreeBuilder(javax.annotation.processing.ProcessingEnvironment env)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.sun.source.tree.ArrayAccessTree
buildArrayAccess(com.sun.source.tree.ExpressionTree array, com.sun.source.tree.ExpressionTree index)
Builds an AST Tree to dereference an array.com.sun.source.tree.MemberSelectTree
buildArrayLengthAccess(com.sun.source.tree.ExpressionTree expression)
Builds an AST Tree to dereference the length field of an array.com.sun.source.tree.AssignmentTree
buildAssignment(com.sun.source.tree.ExpressionTree lhs, com.sun.source.tree.ExpressionTree rhs)
Builds an AST Tree to assign an RHS expression to an LHS expression.com.sun.source.tree.StatementTree
buildAssignment(com.sun.source.tree.VariableTree variable, com.sun.source.tree.ExpressionTree expr)
Builds an AST Tree to assign an expression to a variable.com.sun.source.tree.BinaryTree
buildBinary(javax.lang.model.type.TypeMirror type, com.sun.source.tree.Tree.Kind op, com.sun.source.tree.ExpressionTree left, com.sun.source.tree.ExpressionTree right)
Builds an AST Tree to perform a binary operation.com.sun.source.tree.IdentifierTree
buildClassUse(javax.lang.model.element.Element elt)
Builds an AST Tree to refer to a class name.com.sun.source.tree.MemberSelectTree
buildHasNextMethodAccess(com.sun.source.tree.ExpressionTree iteratorExpr)
Builds an AST Tree to access the hasNext() method of an iterator.com.sun.source.tree.MemberSelectTree
buildIteratorMethodAccess(com.sun.source.tree.ExpressionTree iterableExpr)
Builds an AST Tree to access the iterator() method of some iterable expression.com.sun.source.tree.BinaryTree
buildLessThan(com.sun.source.tree.ExpressionTree left, com.sun.source.tree.ExpressionTree right)
Builds an AST Tree to compare two operands with less than.com.sun.source.tree.LiteralTree
buildLiteral(java.lang.Object value)
Builds an AST Tree representing a literal value of primitive or String type.com.sun.source.tree.MethodInvocationTree
buildMethodInvocation(com.sun.source.tree.ExpressionTree methodExpr)
Builds an AST Tree to call a method designated by the argument expression.com.sun.source.tree.MethodInvocationTree
buildMethodInvocation(com.sun.source.tree.ExpressionTree methodExpr, com.sun.source.tree.ExpressionTree argExpr)
Builds an AST Tree to call a method designated by methodExpr, with one argument designated by argExpr.com.sun.source.tree.NewArrayTree
buildNewArray(javax.lang.model.type.TypeMirror componentType, java.util.List<com.sun.source.tree.ExpressionTree> elems)
Builds an AST Tree to create a new array with initializers.com.sun.source.tree.MemberSelectTree
buildNextMethodAccess(com.sun.source.tree.ExpressionTree iteratorExpr)
Builds an AST Tree to access the next() method of an iterator.com.sun.source.tree.MemberSelectTree
buildPrimValueMethodAccess(com.sun.source.tree.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.com.sun.source.tree.TypeCastTree
buildTypeCast(javax.lang.model.type.TypeMirror type, com.sun.source.tree.ExpressionTree expr)
Builds an AST Tree to cast the type of an expression.com.sun.source.tree.MemberSelectTree
buildValueOfMethodAccess(com.sun.source.tree.Tree expr)
Builds an AST Tree to access the valueOf() method of boxed type such as Short or Float.com.sun.source.tree.VariableTree
buildVariableDecl(com.sun.source.tree.Tree type, java.lang.String name, javax.lang.model.element.Element owner, com.sun.source.tree.ExpressionTree initializer)
Builds an AST Tree to declare and initialize a variable.com.sun.source.tree.VariableTree
buildVariableDecl(javax.lang.model.type.TypeMirror type, java.lang.String name, javax.lang.model.element.Element owner, com.sun.source.tree.ExpressionTree initializer)
Builds an AST Tree to declare and initialize a variable, with no modifiers.com.sun.source.tree.IdentifierTree
buildVariableUse(com.sun.source.tree.VariableTree decl)
Builds an AST Tree to refer to a variable.static com.sun.tools.javac.code.Symbol.MethodSymbol
getValueOfMethod(javax.annotation.processing.ProcessingEnvironment env, javax.lang.model.type.TypeMirror boxedType)
Returns the valueOf method of a boxed type such as Short or Float.com.sun.tools.javac.tree.JCTree.Tag
kindToTag(com.sun.source.tree.Tree.Kind kind)
Map public AST Tree.Kinds to internal javac JCTree.Tags.
-
-
-
Field Detail
-
elements
protected final javax.lang.model.util.Elements elements
-
modelTypes
protected final javax.lang.model.util.Types modelTypes
-
javacTypes
protected final com.sun.tools.javac.code.Types javacTypes
-
maker
protected final com.sun.tools.javac.tree.TreeMaker maker
-
names
protected final com.sun.tools.javac.util.Names names
-
symtab
protected final com.sun.tools.javac.code.Symtab symtab
-
env
protected final javax.annotation.processing.ProcessingEnvironment env
-
-
Method Detail
-
buildIteratorMethodAccess
public com.sun.source.tree.MemberSelectTree buildIteratorMethodAccess(com.sun.source.tree.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
-
buildHasNextMethodAccess
public com.sun.source.tree.MemberSelectTree buildHasNextMethodAccess(com.sun.source.tree.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 com.sun.source.tree.MemberSelectTree buildNextMethodAccess(com.sun.source.tree.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 com.sun.source.tree.MemberSelectTree buildArrayLengthAccess(com.sun.source.tree.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 com.sun.source.tree.MethodInvocationTree buildMethodInvocation(com.sun.source.tree.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 com.sun.source.tree.MethodInvocationTree buildMethodInvocation(com.sun.source.tree.ExpressionTree methodExpr, com.sun.source.tree.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 com.sun.source.tree.VariableTree buildVariableDecl(javax.lang.model.type.TypeMirror type, java.lang.String name, javax.lang.model.element.Element owner, com.sun.source.tree.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 com.sun.source.tree.VariableTree buildVariableDecl(com.sun.source.tree.Tree type, java.lang.String name, javax.lang.model.element.Element owner, com.sun.source.tree.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
public com.sun.source.tree.IdentifierTree buildVariableUse(com.sun.source.tree.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 com.sun.source.tree.TypeCastTree buildTypeCast(javax.lang.model.type.TypeMirror type, com.sun.source.tree.ExpressionTree expr)
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
public com.sun.source.tree.StatementTree buildAssignment(com.sun.source.tree.VariableTree variable, com.sun.source.tree.ExpressionTree expr)
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
public com.sun.source.tree.AssignmentTree buildAssignment(com.sun.source.tree.ExpressionTree lhs, com.sun.source.tree.ExpressionTree rhs)
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
public com.sun.source.tree.LiteralTree buildLiteral(java.lang.Object value)
Builds an AST Tree representing a literal value of primitive or String type.
-
buildLessThan
public com.sun.source.tree.BinaryTree buildLessThan(com.sun.source.tree.ExpressionTree left, com.sun.source.tree.ExpressionTree right)
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
public com.sun.source.tree.ArrayAccessTree buildArrayAccess(com.sun.source.tree.ExpressionTree array, com.sun.source.tree.ExpressionTree index)
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
public com.sun.source.tree.IdentifierTree buildClassUse(javax.lang.model.element.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 com.sun.source.tree.MemberSelectTree buildValueOfMethodAccess(com.sun.source.tree.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(javax.annotation.processing.ProcessingEnvironment env, javax.lang.model.type.TypeMirror boxedType)
Returns the valueOf method of a boxed type such as Short or Float.
-
buildPrimValueMethodAccess
public com.sun.source.tree.MemberSelectTree buildPrimValueMethodAccess(com.sun.source.tree.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(com.sun.source.tree.Tree.Kind kind)
Map public AST Tree.Kinds to internal javac JCTree.Tags.
-
buildBinary
public com.sun.source.tree.BinaryTree buildBinary(javax.lang.model.type.TypeMirror type, com.sun.source.tree.Tree.Kind op, com.sun.source.tree.ExpressionTree left, com.sun.source.tree.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
public com.sun.source.tree.NewArrayTree buildNewArray(javax.lang.model.type.TypeMirror componentType, java.util.List<com.sun.source.tree.ExpressionTree> elems)
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
-
-