Class ASTRecordDeclaration
- 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.ASTRecordDeclaration
-
- All Implemented Interfaces:
GenericNode<JavaNode>
,JjtreeNode<JavaNode>
,Node
,TextAvailableNode
,Annotatable
,ASTBodyDeclaration
,ASTTopLevelDeclaration
,ASTTypeDeclaration
,JavadocCommentOwner
,JavaNode
,ModifierOwner
,SymbolDeclaratorNode
,TypeNode
,TypeParamOwnerNode
,Reportable
public final class ASTRecordDeclaration extends AbstractJjtreeNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode>
A record declaration is a special data class type (JDK 16 feature). This is a find boundary for tree traversal methods.RecordDeclaration ::=
ModifierList
"record" <IDENTIFIER> TypeParameters? RecordComponents ImplementsList? RecordBody- See Also:
- JEP 395: Records
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface net.sourceforge.pmd.lang.java.ast.ModifierOwner
ModifierOwner.Visibility
-
-
Field Summary
Fields Modifier and Type Field Description protected JSymbolTable
symbolTable
-
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 Instance Methods Concrete Methods Modifier and Type Method Description <P,R>
RacceptVisitor(AstVisitor<? super P,? extends R> visitor, P data)
protected <P,R>
RacceptVisitor(JavaVisitor<? super P,? extends R> visitor, P data)
protected void
addChild(net.sourceforge.pmd.lang.java.ast.AbstractJavaNode child, int index)
@NonNull String
getBinaryName()
Returns the binary name of this type declaration.@Nullable String
getCanonicalName()
Returns the canonical name of this class, if it exists.NodeStream<ASTBodyDeclaration>
getDeclarations()
Retrieves the member declarations (fields, methods, classes, etc.) from the body of this type declaration.@NonNull ASTRecordComponentList
getRecordComponents()
Returns the record components declared by this class.FileLocation
getReportLocation()
@NonNull ASTCompilationUnit
getRoot()
@NonNull String
getSimpleName()
Returns the simple name of this type declaration.@NonNull T
getSymbol()
Returns the symbol this node declares.@NonNull JSymbolTable
getSymbolTable()
Returns the symbol table for the program point represented by this node.@NonNull JClassType
getTypeMirror()
Returns the compile-time type of this node.@NonNull JTypeMirror
getTypeMirror(TypingContext context)
TypeSystem
getTypeSystem()
Returns the type system with which this node was created.ModifierOwner.Visibility
getVisibility()
Returns the visibility corresponding to theeffective modifiers
.String
getXPathNodeName()
protected void
insertChild(net.sourceforge.pmd.lang.java.ast.AbstractJavaNode child, int index)
boolean
isFindBoundary()
void
jjtClose()
protected void
removeChildAtIndex(int childIndex)
protected void
setChild(net.sourceforge.pmd.lang.java.ast.AbstractJavaNode child, int index)
protected void
setFirstToken(JavaccToken token)
protected void
setImage(String image)
protected void
setLastToken(JavaccToken token)
-
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.java.ast.Annotatable
getAnnotation, isAnnotationPresent, isAnnotationPresent, isAnyAnnotationPresent
-
Methods inherited from interface net.sourceforge.pmd.lang.java.ast.ASTTypeDeclaration
getBody, getDeclarations, getEnumConstants, getOperations, getPackageName, getSuperInterfaceTypeNodes, getSymbol, isAbstract, isAnnotation, isAnonymous, isEnum, isFinal, isInterface, isLocal, isNested, isRecord, isRegularClass, isRegularInterface, isStatic, isTopLevel, isUnnamedToplevelClass
-
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 net.sourceforge.pmd.lang.java.ast.JavadocCommentOwner
getJavadocComment
-
Methods inherited from interface net.sourceforge.pmd.lang.java.ast.JavaNode
getEnclosingType, getRoot, getSymbolTable, getTypeSystem
-
Methods inherited from interface net.sourceforge.pmd.lang.ast.impl.javacc.JjtreeNode
getFirstToken, getLastToken, tokens
-
Methods inherited from interface net.sourceforge.pmd.lang.java.ast.ModifierOwner
getDeclaredAnnotations, getEffectiveVisibility, getModifiers, hasExplicitModifiers, hasModifiers, hasVisibility
-
Methods inherited from interface net.sourceforge.pmd.lang.ast.Node
acceptVisitor, ancestors, children, compareLocation, descendants, firstChild, getAstInfo, getBeginColumn, getBeginLine, getEndColumn, getEndLine, getImage, getIndexInParent, getLanguageVersion, getNumChildren, getTextDocument, getUserMap, getXPathAttributesIterator, getXPathNodeName, hasImageEqualTo
-
Methods inherited from interface net.sourceforge.pmd.lang.ast.TextAvailableNode
getOriginalText, getText, getTextRegion
-
Methods inherited from interface net.sourceforge.pmd.lang.java.ast.TypeNode
getTypeMirror
-
Methods inherited from interface net.sourceforge.pmd.lang.java.ast.TypeParamOwnerNode
getTypeParameters
-
-
-
-
Field Detail
-
symbolTable
protected JSymbolTable symbolTable
-
-
Method Detail
-
acceptVisitor
protected <P,R> R acceptVisitor(JavaVisitor<? super P,? extends R> visitor, P data)
-
getDeclarations
public NodeStream<ASTBodyDeclaration> getDeclarations()
Description copied from interface:ASTTypeDeclaration
Retrieves the member declarations (fields, methods, classes, etc.) from the body of this type declaration.
-
getRecordComponents
public @NonNull ASTRecordComponentList getRecordComponents()
Description copied from interface:ASTTypeDeclaration
Returns the record components declared by this class. If this is not a record declaration, returns null.
-
getReportLocation
public FileLocation getReportLocation()
- Specified by:
getReportLocation
in interfaceNode
- Specified by:
getReportLocation
in interfaceReportable
-
getSimpleName
public @NonNull String getSimpleName()
Description copied from interface:ASTTypeDeclaration
Returns the simple name of this type declaration. Returns the empty string if this is an anonymous class declaration.- Specified by:
getSimpleName
in interfaceASTTypeDeclaration
-
getBinaryName
public @NonNull String getBinaryName()
Description copied from interface:ASTTypeDeclaration
Returns the binary name of this type declaration. This is likeClass.getName()
.- Specified by:
getBinaryName
in interfaceASTTypeDeclaration
-
getCanonicalName
public @Nullable String getCanonicalName()
Description copied from interface:ASTTypeDeclaration
Returns the canonical name of this class, if it exists. Otherwise returns null. This is likeClass.getCanonicalName()
.A canonical name exists if all enclosing types have a canonical name, and this is neither a local class nor an anonymous class. For example:
So non-local/anonymous classes declared somewhere in a local/anonymous class also have no locpackage p; public class A { // p.A class M { // p.A.M { class Local { // null, local class class M2 {} // null, member of a local class } new Local() { // null, anonymous class class M2 {} // null, member of an anonymous class }; } } }
- Specified by:
getCanonicalName
in interfaceASTTypeDeclaration
-
getVisibility
public ModifierOwner.Visibility getVisibility()
Description copied from interface:ModifierOwner
Returns the visibility corresponding to theeffective modifiers
. Eg a public method will have visibilitypublic
, a local class will have visibilitylocal
. There cannot be any conflict withModifierOwner.hasModifiers(JModifier, JModifier...)
} on well-formed code (e.g. for anyn
,(n.getVisibility() == V_PROTECTED) == n.hasModifiers(PROTECTED)
)TODO a public method of a private class can be considered to be private we could probably add another method later on that takes this into account
- Specified by:
getVisibility
in interfaceModifierOwner
-
getTypeMirror
public @NonNull JClassType getTypeMirror()
Description copied from interface:TypeNode
Returns the compile-time type of this node. For example, for a string literal, returns the type mirror forString
, for a method call, returns the return type of the call, etc.This method ignores conversions applied to the value of the node because of its context. For example, in
1 + ""
, the numeric literal will have typeint
, but it is converted toString
by the surrounding concatenation expression. Similarly, inCollections.singletonList(1)
, theASTNumericLiteral
node has typeint
, but the type of the method formal isInteger
, and boxing is applied at runtime. Possibly, an API will be added to expose this information.- Specified by:
getTypeMirror
in interfaceASTTypeDeclaration
- Specified by:
getTypeMirror
in interfaceTypeNode
- Returns:
- The type mirror. Never returns null; if the type is unresolved, returns
TypeSystem.UNKNOWN
.
-
isFindBoundary
public boolean isFindBoundary()
- Specified by:
isFindBoundary
in interfaceNode
-
getSymbol
public @NonNull T getSymbol()
Description copied from interface:SymbolDeclaratorNode
Returns the symbol this node declares.- Specified by:
getSymbol
in interfaceSymbolDeclaratorNode
-
getTypeMirror
public @NonNull JTypeMirror getTypeMirror(TypingContext context)
- Specified by:
getTypeMirror
in interfaceTypeNode
-
jjtClose
public void jjtClose()
- Overrides:
jjtClose
in 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:
acceptVisitor
in interfaceNode
-
addChild
protected void addChild(net.sourceforge.pmd.lang.java.ast.AbstractJavaNode child, int index)
- Overrides:
addChild
in classAbstractJjtreeNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode>
-
insertChild
protected void insertChild(net.sourceforge.pmd.lang.java.ast.AbstractJavaNode child, int index)
- Overrides:
insertChild
in classAbstractJjtreeNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode>
-
removeChildAtIndex
protected void removeChildAtIndex(int childIndex)
- Overrides:
removeChildAtIndex
in classAbstractNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode>
-
setImage
protected void setImage(String image)
- Overrides:
setImage
in classAbstractJjtreeNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode>
-
setFirstToken
protected void setFirstToken(JavaccToken token)
- Overrides:
setFirstToken
in classAbstractJjtreeNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode>
-
setLastToken
protected void setLastToken(JavaccToken token)
- Overrides:
setLastToken
in classAbstractJjtreeNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode>
-
setChild
protected void setChild(net.sourceforge.pmd.lang.java.ast.AbstractJavaNode child, int index)
- Overrides:
setChild
in classAbstractNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode>
-
getSymbolTable
public @NonNull JSymbolTable getSymbolTable()
Description copied from interface:JavaNode
Returns the symbol table for the program point represented by this node.- Specified by:
getSymbolTable
in interfaceJavaNode
-
getTypeSystem
public TypeSystem getTypeSystem()
Description copied from interface:JavaNode
Returns the type system with which this node was created. This is the object responsible for representing types in the compilation unit.- Specified by:
getTypeSystem
in interfaceJavaNode
-
getRoot
public final @NonNull ASTCompilationUnit getRoot()
-
getXPathNodeName
public final String getXPathNodeName()
- Specified by:
getXPathNodeName
in interfaceNode
-
-