Class ASTMethodReference
- 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.ASTMethodReference
-
- All Implemented Interfaces:
GenericNode<JavaNode>,JjtreeNode<JavaNode>,Node,TextAvailableNode,ASTExpression,ASTMemberValue,ASTPrimaryExpression,ASTSwitchArrowRHS,FunctionalExpression,JavaNode,MethodUsage,QualifiableExpression,TypeNode,Reportable
public final class ASTMethodReference extends AbstractJjtreeNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,JavaNode> implements QualifiableExpression, MethodUsage, FunctionalExpression
Method or constructor reference expression.MethodReference ::=
Expression"::"TypeArguments? <IDENTIFIER> |TypeExpression"::"TypeArguments? "new"
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface net.sourceforge.pmd.lang.java.ast.ASTExpression
ASTExpression.ConstResult
-
-
Field Summary
Fields Modifier and Type Field Description protected 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 Instance Methods Concrete Methods Deprecated 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 voidaddChild(net.sourceforge.pmd.lang.java.ast.AbstractJavaNode child, int index)protected @Nullable ObjectbuildConstValue()Deprecated.Since 7.12.0.protected voidenlargeLeft(JavaccToken child)@NonNull ASTExpression.ConstResultgetConstFoldingResult()Returns the result of constant folding on this expression.@Nullable ASTTypeArgumentsgetExplicitTypeArguments()Returns the explicit type arguments mentioned after the "::" if they exist.JMethodSiggetFunctionalMethod()Returns the method that is overridden in the functional interface.TypeNodegetLhs()Returns the LHS, whether it is a type or an expression.@NonNull StringgetMethodName()Returns the method name, or anJConstructorSymbol.CTOR_NAMEif this is a constructor reference.OverloadSelectionResultgetOverloadSelectionInfo()Returns information about the overload selection for this call.intgetParenthesisDepth()Returns the number of parenthesis levels around this expression.@NonNull ASTExpressiongetQualifier()Returns the node to the left of the "::".JMethodSiggetReferencedMethod()Returns the method that is referenced.@NonNull ASTCompilationUnitgetRoot()@NonNull JSymbolTablegetSymbolTable()Returns the symbol table for the program point represented by this node.@NonNull JTypeMirrorgetTypeMirror()Returns the type of the functional interface.@NonNull JTypeMirrorgetTypeMirror(TypingContext context)TypeSystemgetTypeSystem()Returns the type system with which this node was created.StringgetXPathNodeName()protected voidinsertChild(net.sourceforge.pmd.lang.java.ast.AbstractJavaNode child, int index)booleanisConstructorReference()Returns true if this is a constructor reference, e.g.voidjjtClose()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)-
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
getConstFoldingResult, getConstValue, getConversionContext, getParenthesisDepth, isCompileTimeConstant, isExpression, isParenthesized
-
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
-
jjtClose
public void jjtClose()
-
getLhs
public TypeNode getLhs()
Returns the LHS, whether it is a type or an expression. Returns null if this is an unqualified method call.
-
isConstructorReference
public boolean isConstructorReference()
Returns true if this is a constructor reference, e.g.ArrayList::new.
-
getQualifier
public @NonNull ASTExpression getQualifier()
Returns the node to the left of the "::". This may be atype expression, or anambiguous name.Note that if this is a constructor reference, then this can only return a type expression.
- Specified by:
getQualifierin interfaceQualifiableExpression
-
getExplicitTypeArguments
public @Nullable ASTTypeArguments getExplicitTypeArguments()
Returns the explicit type arguments mentioned after the "::" if they exist. Type arguments mentioned before the "::", if any, are contained within the lhs type.
-
getMethodName
public @NonNull String getMethodName()
Returns the method name, or anJConstructorSymbol.CTOR_NAMEif this is a constructor reference.- Specified by:
getMethodNamein interfaceMethodUsage
-
acceptVisitor
protected <P,R> R acceptVisitor(JavaVisitor<? super P,? extends R> visitor, P data)
-
getTypeMirror
public @NonNull JTypeMirror getTypeMirror()
Returns the type of the functional interface. E.g. instringStream.map(String::isEmpty), this isjava.util.function.Function<java.lang.String, java.lang.Boolean>.- Specified by:
getTypeMirrorin interfaceFunctionalExpression- Specified by:
getTypeMirrorin interfaceTypeNode- Returns:
- The type mirror. Never returns null; if the type is unresolved, returns
TypeSystem.UNKNOWN. - See Also:
getFunctionalMethod(),getReferencedMethod()
-
getFunctionalMethod
public JMethodSig getFunctionalMethod()
Returns the method that is overridden in the functional interface. E.g. instringStream.map(String::isEmpty), this isjava.util.function.Function#apply(java.lang.String) -> java.lang.Boolean- Specified by:
getFunctionalMethodin interfaceFunctionalExpression- See Also:
getReferencedMethod(),getTypeMirror()
-
getReferencedMethod
public JMethodSig getReferencedMethod()
Returns the method that is referenced. E.g. instringStream.map(String::isEmpty), this isjava.lang.String.isEmpty() -> boolean.This is called the compile-time declaration of the method reference in the JLS.
If no such method can be found, returns
TypeSystem.UNRESOLVED_METHOD.- See Also:
getFunctionalMethod(),getTypeMirror()
-
getOverloadSelectionInfo
public OverloadSelectionResult getOverloadSelectionInfo()
Description copied from interface:MethodUsageReturns information about the overload selection for this call. Be aware, that selection might have failed (OverloadSelectionResult.isFailed()).- Specified by:
getOverloadSelectionInfoin interfaceMethodUsage
-
getParenthesisDepth
public int getParenthesisDepth()
Description copied from interface:ASTExpressionReturns 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:
getParenthesisDepthin interfaceASTExpression
-
getConstFoldingResult
public @NonNull ASTExpression.ConstResult getConstFoldingResult()
Description copied from interface:ASTExpressionReturns the result of constant folding on this expression. This may find a constant value for more than strict compile-time constants. SeeASTExpression.ConstResult.- Specified by:
getConstFoldingResultin interfaceASTExpression
-
buildConstValue
@Deprecated protected @Nullable Object buildConstValue()
Deprecated.Since 7.12.0. Kept for binary compatibility. This method should have been package-private from the start. UseASTExpression.getConstValue()orASTExpression.getConstFoldingResult()instead.
-
getTypeMirror
public @NonNull JTypeMirror getTypeMirror(TypingContext context)
- Specified by:
getTypeMirrorin interfaceTypeNode
-
acceptVisitor
public final <P,R> R acceptVisitor(AstVisitor<? super P,? extends R> visitor, P data)
- Specified by:
acceptVisitorin interfaceNode
-
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
-
-