Affects PMD Version: 6.32.0
Make sure, to test with the latest PMD version.
Description:
When using a variable named record
, PMD fails with an exception. I imagine this is because the keyword record
is reserved for JDK 16 support, but the source file actually compiles fine using the latest JDK 16 preview.
Exception Stacktrace:
net.sourceforge.pmd.PMDException: Error while parsing /tmp/test/RecordExample.java
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCodeWithoutCache(SourceCodeProcessor.java:116)
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:95)
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:57)
at net.sourceforge.pmd.processor.PmdRunnable.call(PmdRunnable.java:85)
at net.sourceforge.pmd.processor.PmdRunnable.call(PmdRunnable.java:29)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: net.sourceforge.pmd.lang.java.ast.ParseException: Encountered " "." ". "" at line 6, column 15.
Was expecting:
<IDENTIFIER> ...
at net.sourceforge.pmd.lang.java.ast.JavaParser.generateParseException(JavaParser.java:13324)
at net.sourceforge.pmd.lang.java.ast.JavaParser.jj_consume_token(JavaParser.java:13208)
at net.sourceforge.pmd.lang.java.ast.JavaParser.RecordDeclaration(JavaParser.java:1304)
at net.sourceforge.pmd.lang.java.ast.JavaParser.LocalTypeDecl(JavaParser.java:5605)
at net.sourceforge.pmd.lang.java.ast.JavaParser.BlockStatement(JavaParser.java:5566)
at net.sourceforge.pmd.lang.java.ast.JavaParser.Block(JavaParser.java:5488)
at net.sourceforge.pmd.lang.java.ast.JavaParser.MethodDeclaration(JavaParser.java:2104)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ClassOrInterfaceBodyDeclaration(JavaParser.java:1785)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ClassOrInterfaceBody(JavaParser.java:1738)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ClassOrInterfaceDeclaration(JavaParser.java:879)
at net.sourceforge.pmd.lang.java.ast.JavaParser.TypeDeclaration(JavaParser.java:781)
at net.sourceforge.pmd.lang.java.ast.JavaParser.CompilationUnit(JavaParser.java:501)
at net.sourceforge.pmd.lang.java.AbstractJavaParser.parse(AbstractJavaParser.java:62)
at net.sourceforge.pmd.SourceCodeProcessor.parse(SourceCodeProcessor.java:127)
at net.sourceforge.pmd.SourceCodeProcessor.processSource(SourceCodeProcessor.java:191)
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCodeWithoutCache(SourceCodeProcessor.java:113)
... 10 more
Code Sample demonstrating the issue:
import java.util.Map;
import java.util.HashMap;
public class RecordExample {
public void main(String... args) {
final Map<String, String> record = new HashMap<>();
record.put("key", "value");
}
}
Steps to reproduce:
Please provide detailed steps for how we can reproduce the bug.
pmd -R rulesets/java/quickstart.xml -f xml -d /tmp/test/
).Running PMD through: CLI
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4