Class ASTLambdaExpression

    • Method Detail

      • getFunctionalMethod

        public JMethodSig getFunctionalMethod()
        Returns the method that is overridden in the functional interface. E.g. in stringStream.map(s -> s.isEmpty()), this is java.util.function.Function#apply(java.lang.String) -> java.lang.Boolean
        Specified by:
        getFunctionalMethod in interface FunctionalExpression
        See Also:
        getTypeMirror()
      • isExplicitlyTyped

        public boolean isExplicitlyTyped()
        Return true if this lambda is explicitly typed, meaning all parameters have an explicit type. Note that lambdas with zero parameters are explicitly typed.
      • isBlockBody

        public boolean isBlockBody()
        Returns true if this lambda has a block for body.
      • isExpressionBody

        public boolean isExpressionBody()
        Returns true if this lambda has an expression for body.
      • getBlockBody

        public @Nullable ASTBlock getBlockBody()
        Returns the body of this lambda if it is a block.
      • getExpressionBody

        public @Nullable ASTExpression getExpressionBody()
        Returns the body of this lambda if it is an expression.
      • isFindBoundary

        public boolean isFindBoundary()
        Specified by:
        isFindBoundary in interface Node
      • getArity

        public int getArity()
        Returns the number of formal parameters of this lambda.
      • acceptVisitor

        protected <P,​R> R acceptVisitor​(JavaVisitor<? super P,​? extends R> visitor,
                                              P data)
      • 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