Class ASTMethodReference

    • 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.
      • 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.
      • acceptVisitor

        protected <P,​R> R acceptVisitor​(JavaVisitor<? super P,​? extends R> visitor,
                                              P data)
      • getReferencedMethod

        public JMethodSig getReferencedMethod()
        Returns the method that is referenced. E.g. in stringStream.map(String::isEmpty), this is java.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()
      • 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 interface ASTExpression
      • getConstValue

        public @Nullable Object 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 that null 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 interface ASTExpression
        Specified by:
        getConstValue in interface ASTMemberValue
      • buildConstValue

        protected @Nullable Object buildConstValue()
      • acceptVisitor

        public final <P,​R> R acceptVisitor​(AstVisitor<? super P,​? extends R> visitor,
                                                 P data)
        Specified by:
        acceptVisitor in interface Node
      • addChild

        protected void addChild​(net.sourceforge.pmd.lang.java.ast.AbstractJavaNode child,
                                int index)
        Overrides:
        addChild in class AbstractJjtreeNode<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 class AbstractJjtreeNode<net.sourceforge.pmd.lang.java.ast.AbstractJavaNode,​JavaNode>
      • removeChildAtIndex

        protected void removeChildAtIndex​(int childIndex)
        Overrides:
        removeChildAtIndex in class AbstractNode<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 class AbstractNode<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 interface JavaNode
      • 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 interface JavaNode