PMD is able to parse a Lambda like this without any problems:
object.event = () -> {
Request request = new Request();
request.setId(42);
};
Whilst this Lambda leads to an error:
object.event = () -> {
Request request = new Request();
request.id = 42;
};
The error is reported as:
net.sourceforge.pmd.lang.java.ast.ParseException: Encountered " "(" "( "" at line 148, column 40.
Was expecting one of:
"false" ...
"new" ...
"null" ...
"super" ...
"this" ...
"true" ...
<INTEGER_LITERAL> ...
<FLOATING_POINT_LITERAL> ...
<HEX_FLOATING_POINT_LITERAL> ...
<CHARACTER_LITERAL> ...
<STRING_LITERAL> ...
<IDENTIFIER> ...
"!" ...
"~" ...
<IDENTIFIER> ...
<IDENTIFIER> ...
<IDENTIFIER> ...
<IDENTIFIER> ...
at net.sourceforge.pmd.lang.java.ast.JavaParser.generateParseException(JavaParser.java:10736)
at net.sourceforge.pmd.lang.java.ast.JavaParser.jj_consume_token(JavaParser.java:10620)
at net.sourceforge.pmd.lang.java.ast.JavaParser.PrimaryPrefix(JavaParser.java:3740)
at net.sourceforge.pmd.lang.java.ast.JavaParser.PrimaryExpression(JavaParser.java:3569)
at net.sourceforge.pmd.lang.java.ast.JavaParser.PostfixExpression(JavaParser.java:3415)
at net.sourceforge.pmd.lang.java.ast.JavaParser.UnaryExpressionNotPlusMinus(JavaParser.java:3379)
at net.sourceforge.pmd.lang.java.ast.JavaParser.UnaryExpression(JavaParser.java:3240)
at net.sourceforge.pmd.lang.java.ast.JavaParser.MultiplicativeExpression(JavaParser.java:3136)
at net.sourceforge.pmd.lang.java.ast.JavaParser.AdditiveExpression(JavaParser.java:3085)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ShiftExpression(JavaParser.java:3032)
at net.sourceforge.pmd.lang.java.ast.JavaParser.RelationalExpression(JavaParser.java:2973)
at net.sourceforge.pmd.lang.java.ast.JavaParser.InstanceOfExpression(JavaParser.java:2939)
at net.sourceforge.pmd.lang.java.ast.JavaParser.EqualityExpression(JavaParser.java:2888)
at net.sourceforge.pmd.lang.java.ast.JavaParser.AndExpression(JavaParser.java:2850)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ExclusiveOrExpression(JavaParser.java:2812)
at net.sourceforge.pmd.lang.java.ast.JavaParser.InclusiveOrExpression(JavaParser.java:2774)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ConditionalAndExpression(JavaParser.java:2736)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ConditionalOrExpression(JavaParser.java:2698)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ConditionalExpression(JavaParser.java:2661)
at net.sourceforge.pmd.lang.java.ast.JavaParser.Expression(JavaParser.java:2536)
at net.sourceforge.pmd.lang.java.ast.JavaParser.StatementExpression(JavaParser.java:4755)
at net.sourceforge.pmd.lang.java.ast.JavaParser.Statement(JavaParser.java:4435)
at net.sourceforge.pmd.lang.java.ast.JavaParser.BlockStatement(JavaParser.java:4582)
at net.sourceforge.pmd.lang.java.ast.JavaParser.Block(JavaParser.java:4543)
at net.sourceforge.pmd.lang.java.ast.JavaParser.MethodDeclaration(JavaParser.java:1542)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ClassOrInterfaceBodyDeclaration(JavaParser.java:1211)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ClassOrInterfaceBody(JavaParser.java:1129)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ClassOrInterfaceDeclaration(JavaParser.java:571)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ClassOrInterfaceBodyDeclaration(JavaParser.java:1191)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ClassOrInterfaceBody(JavaParser.java:1129)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ClassOrInterfaceDeclaration(JavaParser.java:571)
at net.sourceforge.pmd.lang.java.ast.JavaParser.TypeDeclaration(JavaParser.java:463)
at net.sourceforge.pmd.lang.java.ast.JavaParser.CompilationUnit(JavaParser.java:216)
at net.sourceforge.pmd.lang.java.AbstractJavaParser.parse(AbstractJavaParser.java:56)
at net.sourceforge.pmd.testframework.ParserTst.parseJava(ParserTst.java:120)
at net.sourceforge.pmd.testframework.ParserTst.parseJava18(ParserTst.java:116)
at net.sourceforge.pmd.ast.ParserCornersTest.testParsersCases(ParserCornersTest.java:75)