Skip to content

Commit

Permalink
Issue 2216: wrong order of annotation and type args
Browse files Browse the repository at this point in the history
  • Loading branch information
matozoid committed May 26, 2019
1 parent 628ca47 commit 48edc1a
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 6 deletions.
@@ -1,12 +1,21 @@
package com.github.javaparser.ast.body;

import com.github.javaparser.ast.stmt.Statement;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;
import static com.github.javaparser.utils.TestParser.parseStatement;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;

class AnnotationDeclarationTest {
@Test
void cantAddField() {
assertThrows(IllegalStateException.class, () -> new AnnotationDeclaration().addField(Object.class, "oo"));
}

@Test
void issue2216() {
Statement statement = parseStatement("TT tt = new <String> @TypeAnno @TA2 TT( \"S\" );");
assertEquals("TT tt = new <String> @TypeAnno @TA2 TT(\"S\");", statement.toString());
}
}
@@ -1,31 +1,40 @@
package com.github.javaparser.utils;

import com.github.javaparser.JavaParser;
import com.github.javaparser.ParseResult;
import com.github.javaparser.ParserConfiguration;
import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.body.BodyDeclaration;
import com.github.javaparser.ast.expr.Expression;
import com.github.javaparser.ast.stmt.Statement;

import static com.github.javaparser.ParserConfiguration.LanguageLevel.BLEEDING_EDGE;
import static org.junit.jupiter.api.Assertions.fail;

public class TestParser {

private static final JavaParser parser = new JavaParser(new ParserConfiguration().setLanguageLevel(BLEEDING_EDGE));

public static CompilationUnit parseCompilationUnit(String stmt) {
return parser.parse(stmt).getResult().get();
return unpack(parser.parse(stmt));
}

public static Statement parseStatement(String stmt) {
return parser.parseStatement(stmt).getResult().get();
return unpack(parser.parseStatement(stmt));
}

private static <T> T unpack(ParseResult<T> result) {
if (!result.isSuccessful()) {
fail(result.getProblems().toString());
}
return result.getResult().get();
}

public static Expression parseExpression(String expr) {
return parser.parseExpression(expr).getResult().get();
return unpack(parser.parseExpression(expr));
}

public static BodyDeclaration<?> parseBodyDeclaration(String bd) {
return parser.parseBodyDeclaration(bd).getResult().get();
return unpack(parser.parseBodyDeclaration(bd));
}
}
2 changes: 1 addition & 1 deletion javaparser-core/src/main/javacc/java.jj
Expand Up @@ -1988,12 +1988,12 @@ Expression AllocationExpression(Expression scope):
{
"new" { if(scope==null) {begin=token();} else {begin = orIfInvalid(begin, scope);} }

[ typeArgs = TypeArguments() ]
annotations = Annotations()
(
type = PrimitiveType(annotations)
ret = ArrayCreation(begin, type)
|
[ typeArgs = TypeArguments() ]
type = ClassOrInterfaceType(annotations)
(
ret = ArrayCreation(begin, type)
Expand Down

0 comments on commit 48edc1a

Please sign in to comment.