Problem was the stack is empty if the local var declaration
is the first node of the compilation unit to be pushed.
This commit is contained in:
Clément Fournier
2020-09-10 12:24:03 +02:00
parent d6ba977bb8
commit fc759db5ca
2 changed files with 14 additions and 2 deletions

View File

@ -1997,8 +1997,10 @@ void BlockStatement():
|
{
List<Node> annotationsAndChildren = new ArrayList<Node>();
while (jjtree.peekNode() instanceof ASTAnnotation) {
annotationsAndChildren.add(jjtree.popNode());
if (jjtree.nodeArity() > 0) { // peekNode would throw if the stack is empty
while (jjtree.peekNode() instanceof ASTAnnotation) {
annotationsAndChildren.add(jjtree.popNode());
}
}
}
LocalVariableDeclaration()

View File

@ -177,6 +177,16 @@ public class ParserCornersTest {
java8.parseResource("GitHubBug207.java");
}
@Test
public void testGitHubBug2767() {
// PMD fails to parse an initializer block.
// PMD 6.26.0 parses this code just fine.
java.withDefaultVersion("15-preview")
.parse("class Foo {\n"
+ " {final int I;}\n"
+ "}\n");
}
@Test
public void testBug206() {
java8.parse("public @interface Foo {" + "\n"