diff options
3 files changed, 23 insertions, 2 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/ConstructorDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/ConstructorDeclaration.java index 58ee6da80..d8cf253ce 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/ConstructorDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/ConstructorDeclaration.java @@ -62,6 +62,10 @@ public final class ConstructorDeclaration extends CallableDeclaration<Constructo this(null, EnumSet.noneOf(Modifier.class), new NodeList<>(), new NodeList<>(), new SimpleName(), new NodeList<>(), new NodeList<>(), new BlockStmt()); } + public ConstructorDeclaration(String name) { + this(null, EnumSet.of(Modifier.PUBLIC), new NodeList<>(), new NodeList<>(), new SimpleName(name), new NodeList<>(), new NodeList<>(), new BlockStmt()); + } + public ConstructorDeclaration(EnumSet<Modifier> modifiers, String name) { this(null, modifiers, new NodeList<>(), new NodeList<>(), new SimpleName(name), new NodeList<>(), new NodeList<>(), new BlockStmt()); } diff --git a/javaparser-core/src/main/javacc/java.jj b/javaparser-core/src/main/javacc/java.jj index c88befb93..6e47f2d3c 100644 --- a/javaparser-core/src/main/javacc/java.jj +++ b/javaparser-core/src/main/javacc/java.jj @@ -1993,7 +1993,7 @@ Expression PrimaryPrefix(): [ args = Arguments() { hasArgs=true; } ] { if (hasArgs) { - ret = new MethodCallExpr(range(begin, token()), null, emptyList(), name, args); + ret = new MethodCallExpr(range(begin, token()), null, null, name, args); } else { ret = new NameExpr(name); } @@ -2890,7 +2890,7 @@ BlockStmt BlockParseStart(): Statement BlockStatementParseStart(): { Statement ret; } -{ ret = BlockStatement() <EOF> { return ret; } } +{ (LOOKAHEAD(3) ret = BlockStatement()|ret = ExplicitConstructorInvocation()) <EOF> { return ret; } } ImportDeclaration ImportDeclarationParseStart(): { ImportDeclaration ret; } diff --git a/javaparser-testing/src/test/java/com/github/javaparser/ast/body/ConstructorDeclarationTest.java b/javaparser-testing/src/test/java/com/github/javaparser/ast/body/ConstructorDeclarationTest.java new file mode 100644 index 000000000..633c8f50d --- /dev/null +++ b/javaparser-testing/src/test/java/com/github/javaparser/ast/body/ConstructorDeclarationTest.java @@ -0,0 +1,17 @@ +package com.github.javaparser.ast.body; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class ConstructorDeclarationTest { + @Test + public void acceptsSuper() { + ConstructorDeclaration cons = new ConstructorDeclaration("Cons"); + cons.createBody().addStatement("super();"); + + assertEquals("public Cons() {\n" + + " super();\n" + + "}", cons.toString()); + } +} |