Class ASTList<N extends JavaNode>
- java.lang.Object
-
- net.sourceforge.pmd.lang.ast.impl.AbstractNode<B,N>
-
- net.sourceforge.pmd.lang.ast.impl.javacc.AbstractJjtreeNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode>
-
- net.sourceforge.pmd.lang.java.ast.ASTList<N>
-
- Type Parameters:
N- Type of node contained within this list node
- All Implemented Interfaces:
Iterable<N>,GenericNode<JavaNode>,JjtreeNode<JavaNode>,Node,TextAvailableNode,JavaNode,Reportable
- Direct Known Subclasses:
ASTAnnotationMemberList,ASTArgumentList,ASTArrayDimensions,ASTBlock,ASTExtendsList,ASTFormalParameters,ASTImplementsList,ASTLambdaParameterList,ASTPatternList,ASTPermitsList,ASTRecordComponentList,ASTResourceList,ASTStatementExpressionList,ASTThrowsList,ASTTypeArguments,ASTTypeBody,ASTTypeParameters
public abstract class ASTList<N extends JavaNode> extends AbstractJjtreeNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode> implements Iterable<N>
Common supertype for nodes that act as a kind of list of other nodes. This is mainly provided as a way to share API and not a structural distinction in the AST.This node can be converted to a list with
toList(). Often these nodes are optional in their parent, and so might be null. The methodorEmptyhelps in such cases. For example
Instead of explicitly checking for null, which is annoying, use the following idiom:// This will throw NullPointerException if the class is not generic. for (ASTTypeParameter tparam : classDecl.getTypeParameters()) { }for (ASTTypeParameter tparam : ASTList.orEmpty(classDecl.getTypeParameters())) { }Note that though it is usually the case that the node lists all its children, there is no guarantee about that. For instance,
ASTFormalParametersexcludes the receiver parameter.
-
-
Field Summary
Fields Modifier and Type Field Description protected Class<N>elementTypeprotected JSymbolTablesymbolTable-
Fields inherited from class net.sourceforge.pmd.lang.ast.impl.javacc.AbstractJjtreeNode
id
-
Fields inherited from interface net.sourceforge.pmd.lang.ast.Node
COORDS_COMPARATOR
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description <P,R>
RacceptVisitor(AstVisitor<? super P,? extends R> visitor, P data)protected abstract <P,R>
RacceptVisitor(JavaVisitor<? super P,? extends R> visitor, P data)protected voidaddChild(net.sourceforge.pmd.lang.java.ast.AbstractJavaNode child, int index)protected voidenlargeLeft(JavaccToken child)Nget(int i)@NonNull ASTCompilationUnitgetRoot()@NonNull JSymbolTablegetSymbolTable()Returns the symbol table for the program point represented by this node.TypeSystemgetTypeSystem()Returns the type system with which this node was created.StringgetXPathNodeName()protected voidinsertChild(net.sourceforge.pmd.lang.java.ast.AbstractJavaNode child, int index)booleanisEmpty()Iterator<N>iterator()voidjjtClose()static <N extends JavaNode>
@NonNull List<N>orEmpty(@Nullable ASTList<N> list)Returns an empty list if the parameter is null, otherwise returns itstoList().static <N extends JavaNode>
@NonNull NodeStream<N>orEmptyStream(@Nullable ASTList<N> list)protected voidremoveChildAtIndex(int childIndex)protected voidsetChild(net.sourceforge.pmd.lang.java.ast.AbstractJavaNode child, int index)protected voidsetFirstToken(JavaccToken token)protected voidsetImage(String image)protected voidsetLastToken(JavaccToken token)static <N extends JavaNode>
@Nullable NsingleOrNull(@Nullable ASTList<N> list)Returns the element if there is exactly one, otherwise returns null.intsize()Returns the number of nodes in this list.static intsizeOrZero(@Nullable ASTList<?> list)List<N>toList()Returns a list containing the element of this node.NodeStream<N>toStream()Returns a node stream containing the same element this node contains.-
Methods inherited from class net.sourceforge.pmd.lang.ast.impl.javacc.AbstractJjtreeNode
compareLocation, fitTokensToChildren, getFirstToken, getImage, getLastToken, getTextRegion, jjtOpen, toString
-
Methods inherited from class net.sourceforge.pmd.lang.ast.impl.AbstractNode
children, firstChild, getChild, getIndexInParent, getNumChildren, getParent, getUserMap, remove, setParent
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface net.sourceforge.pmd.lang.ast.impl.GenericNode
ancestors, ancestorsOrSelf, asStream, children, descendants, descendantsOrSelf, getChild, getFirstChild, getLastChild, getNextSibling, getParent, getPreviousSibling
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Methods inherited from interface net.sourceforge.pmd.lang.java.ast.JavaNode
getEnclosingType
-
Methods inherited from interface net.sourceforge.pmd.lang.ast.impl.javacc.JjtreeNode
getFirstToken, getLastToken, tokens
-
Methods inherited from interface net.sourceforge.pmd.lang.ast.Node
ancestors, children, compareLocation, descendants, firstChild, getAstInfo, getBeginColumn, getBeginLine, getEndColumn, getEndLine, getImage, getIndexInParent, getLanguageVersion, getNumChildren, getReportLocation, getTextDocument, getUserMap, getXPathAttributesIterator, hasImageEqualTo, isFindBoundary
-
Methods inherited from interface net.sourceforge.pmd.lang.ast.TextAvailableNode
getOriginalText, getText, getTextRegion
-
-
-
-
Field Detail
-
symbolTable
protected JSymbolTable symbolTable
-
-
Method Detail
-
size
public int size()
Returns the number of nodes in this list. This must be the number of nodes yielded by theiterator().
-
isEmpty
public boolean isEmpty()
-
toStream
public NodeStream<N> toStream()
Returns a node stream containing the same element this node contains.
-
get
public N get(int i)
- Throws:
IndexOutOfBoundsException- if not in range
-
orEmpty
public static <N extends JavaNode> @NonNull List<N> orEmpty(@Nullable ASTList<N> list)
Returns an empty list if the parameter is null, otherwise returns itstoList().- Type Parameters:
N- Type of elements- Parameters:
list- List node- Returns:
- A non-null list
-
orEmptyStream
public static <N extends JavaNode> @NonNull NodeStream<N> orEmptyStream(@Nullable ASTList<N> list)
-
sizeOrZero
public static int sizeOrZero(@Nullable ASTList<?> list)
-
singleOrNull
public static <N extends JavaNode> @Nullable N singleOrNull(@Nullable ASTList<N> list)
Returns the element if there is exactly one, otherwise returns null.- Type Parameters:
N- Type of elements- Parameters:
list- List node- Returns:
- An element, or null.
-
jjtClose
public void jjtClose()
- Overrides:
jjtClosein classAbstractJjtreeNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode>
-
acceptVisitor
public final <P,R> R acceptVisitor(AstVisitor<? super P,? extends R> visitor, P data)
- Specified by:
acceptVisitorin interfaceNode
-
acceptVisitor
protected abstract <P,R> R acceptVisitor(JavaVisitor<? super P,? extends R> visitor, P data)
-
addChild
protected void addChild(net.sourceforge.pmd.lang.java.ast.AbstractJavaNode child, int index)- Overrides:
addChildin classAbstractJjtreeNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode>
-
insertChild
protected void insertChild(net.sourceforge.pmd.lang.java.ast.AbstractJavaNode child, int index)- Overrides:
insertChildin classAbstractJjtreeNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode>
-
removeChildAtIndex
protected void removeChildAtIndex(int childIndex)
- Overrides:
removeChildAtIndexin classAbstractNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode>
-
setImage
protected void setImage(String image)
- Overrides:
setImagein classAbstractJjtreeNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode>
-
setFirstToken
protected void setFirstToken(JavaccToken token)
- Overrides:
setFirstTokenin classAbstractJjtreeNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode>
-
setLastToken
protected void setLastToken(JavaccToken token)
- Overrides:
setLastTokenin classAbstractJjtreeNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode>
-
enlargeLeft
protected void enlargeLeft(JavaccToken child)
- Overrides:
enlargeLeftin classAbstractJjtreeNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode>
-
setChild
protected void setChild(net.sourceforge.pmd.lang.java.ast.AbstractJavaNode child, int index)- Overrides:
setChildin classAbstractNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode>
-
getSymbolTable
public @NonNull JSymbolTable getSymbolTable()
Description copied from interface:JavaNodeReturns the symbol table for the program point represented by this node.- Specified by:
getSymbolTablein interfaceJavaNode
-
getTypeSystem
public TypeSystem getTypeSystem()
Description copied from interface:JavaNodeReturns the type system with which this node was created. This is the object responsible for representing types in the compilation unit.- Specified by:
getTypeSystemin interfaceJavaNode
-
getRoot
public final @NonNull ASTCompilationUnit getRoot()
-
getXPathNodeName
public final String getXPathNodeName()
- Specified by:
getXPathNodeNamein interfaceNode
-
-