Class ASTNumericLiteral
- 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.ASTNumericLiteral
-
- All Implemented Interfaces:
GenericNode<JavaNode>
,JjtreeNode<JavaNode>
,Node
,TextAvailableNode
,ASTExpression
,ASTLiteral
,ASTMemberValue
,ASTPrimaryExpression
,ASTSwitchArrowRHS
,JavaNode
,TypeNode
,Reportable
public final class ASTNumericLiteral extends AbstractJjtreeNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode> implements ASTLiteral
A numeric literal of any type (double, int, long, float, etc).
-
-
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)
protected @NonNull Number
buildConstValue()
int
getBase()
Returns the base of the literal, eg 8 for an octal literal, 10 for a decimal literal, etc.@NonNull Number
getConstValue()
Returns the constant value of this node, if this is a constant expression.Chars
getLiteralText()
Return the text of the literal in the source file.int
getParenthesisDepth()
Returns the number of parenthesis levels around this expression.@NonNull ASTCompilationUnit
getRoot()
@NonNull JSymbolTable
getSymbolTable()
Returns the symbol table for the program point represented by this node.Chars
getText()
@NonNull JPrimitiveType
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.double
getValueAsDouble()
float
getValueAsFloat()
int
getValueAsInt()
long
getValueAsLong()
String
getXPathNodeName()
protected void
insertChild(net.sourceforge.pmd.lang.java.ast.AbstractJavaNode child, int index)
boolean
isCompileTimeConstant()
Returns true if this expression is a compile-time constant, and is inlined.boolean
isDoubleLiteral()
boolean
isFloatLiteral()
boolean
isIntegral()
Returns true if this is an integral literal, ie either a long or an integer literal.boolean
isIntLiteral()
boolean
isLongLiteral()
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.ASTExpression
getConversionContext, getParenthesisDepth, isCompileTimeConstant, isExpression, isParenthesized
-
Methods inherited from interface net.sourceforge.pmd.lang.java.ast.ASTLiteral
getLiteralText
-
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.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.ast.Node
acceptVisitor, ancestors, children, compareLocation, descendants, firstChild, getAstInfo, getBeginColumn, getBeginLine, getEndColumn, getEndLine, getImage, getIndexInParent, getLanguageVersion, getNumChildren, getReportLocation, getTextDocument, getUserMap, getXPathAttributesIterator, getXPathNodeName, hasImageEqualTo, isFindBoundary
-
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
-
-
-
-
Field Detail
-
symbolTable
protected JSymbolTable symbolTable
-
-
Method Detail
-
acceptVisitor
protected <P,R> R acceptVisitor(JavaVisitor<? super P,? extends R> visitor, P data)
-
getConstValue
public @NonNull Number getConstValue()
Description copied from interface:ASTMemberValue
Returns the constant value of this node, if this is a constant expression. Otherwise, or if some references couldn't be resolved, returns null. Note thatnull
is not a constant value, so this method's returning null is not a problem. Note that annotations are not given a constant value by this implementation.- Specified by:
getConstValue
in interfaceASTExpression
- Specified by:
getConstValue
in interfaceASTMemberValue
-
buildConstValue
protected @NonNull Number buildConstValue()
-
getTypeMirror
public @NonNull JPrimitiveType 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 interfaceTypeNode
- Returns:
- The type mirror. Never returns null; if the type is unresolved, returns
TypeSystem.UNKNOWN
.
-
jjtClose
public void jjtClose()
-
isIntLiteral
public boolean isIntLiteral()
-
isLongLiteral
public boolean isLongLiteral()
-
isFloatLiteral
public boolean isFloatLiteral()
-
isDoubleLiteral
public boolean isDoubleLiteral()
-
isIntegral
public boolean isIntegral()
Returns true if this is an integral literal, ie either a long or an integer literal. Otherwise, this is a floating point literal.
-
getBase
public int getBase()
Returns the base of the literal, eg 8 for an octal literal, 10 for a decimal literal, etc. By convention this returns 10 for the literal0
(which can really be any base).
-
getValueAsInt
public int getValueAsInt()
-
getValueAsLong
public long getValueAsLong()
-
getValueAsFloat
public float getValueAsFloat()
-
getValueAsDouble
public double getValueAsDouble()
-
getText
@NoAttribute public final Chars getText()
- Specified by:
getText
in interfaceTextAvailableNode
-
getLiteralText
public final Chars getLiteralText()
Description copied from interface:ASTLiteral
Return the text of the literal in the source file. Note thatTextAvailableNode.getText()
may include parentheses.- Specified by:
getLiteralText
in interfaceASTLiteral
-
isCompileTimeConstant
public boolean isCompileTimeConstant()
Description copied from interface:ASTExpression
Returns true if this expression is a compile-time constant, and is inlined.- Specified by:
isCompileTimeConstant
in interfaceASTExpression
-
getParenthesisDepth
public int getParenthesisDepth()
Description copied from interface:ASTExpression
Returns the number of parenthesis levels around this expression. If this method returns 0, then no parentheses are present.E.g. the expression
(a + b)
is parsed as an AdditiveExpression whose parenthesisDepth is 1, and in((a + b))
it's 2.This is to avoid the parentheses interfering with analysis. Parentheses already influence parsing by breaking the natural precedence of operators. It would mostly hide false positives to make a ParenthesizedExpr node, because it would make semantically equivalent nodes have a very different representation.
On the other hand, when a rule explicitly cares about parentheses, then this attribute may be used to find out whether parentheses were mentioned, so no information is lost.
- Specified by:
getParenthesisDepth
in interfaceASTExpression
-
getTypeMirror
public @NonNull JTypeMirror getTypeMirror(TypingContext context)
- Specified by:
getTypeMirror
in interfaceTypeNode
-
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
-
-