diff options
Diffstat (limited to 'javaparser-testing/src/test/java/com/github/javaparser/ParseErrorRecoveryTest.java')
-rw-r--r-- | javaparser-testing/src/test/java/com/github/javaparser/ParseErrorRecoveryTest.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/javaparser-testing/src/test/java/com/github/javaparser/ParseErrorRecoveryTest.java b/javaparser-testing/src/test/java/com/github/javaparser/ParseErrorRecoveryTest.java new file mode 100644 index 000000000..b41c28bf4 --- /dev/null +++ b/javaparser-testing/src/test/java/com/github/javaparser/ParseErrorRecoveryTest.java @@ -0,0 +1,42 @@ +package com.github.javaparser; + +import com.github.javaparser.ast.CompilationUnit; +import com.github.javaparser.ast.body.MethodDeclaration; +import com.github.javaparser.ast.stmt.LabeledStmt; +import com.github.javaparser.ast.stmt.Statement; +import org.junit.Test; + +import static com.github.javaparser.Providers.provider; +import static com.github.javaparser.ast.Node.Parsedness.UNPARSABLE; +import static org.junit.Assert.assertEquals; + +public class ParseErrorRecoveryTest { + private final JavaParser parser = new JavaParser(); + + @Test + public void compilationUnitRecovery() { + CompilationUnit cu = parser.parse(ParseStart.COMPILATION_UNIT, provider("XXX")).getResult().get(); + assertEquals(UNPARSABLE, cu.getParsed()); + } + + @Test + public void bodystatementSemicolonRecovery() { + MethodDeclaration cu = parser.parse(ParseStart.CLASS_BODY, provider("int x(){X X X;}")).getResult().get().asMethodDeclaration(); + Statement xxx = cu.getBody().get().getStatements().get(0); + assertEquals(UNPARSABLE, xxx.getParsed()); + } + + @Test + public void bodystatementClosingBraceRecovery() { + MethodDeclaration cu = parser.parse(ParseStart.CLASS_BODY, provider("int x(){X X X}")).getResult().get().asMethodDeclaration(); + Statement xxx = cu.getBody().get(); + assertEquals(UNPARSABLE, xxx.getParsed()); + } + + @Test + public void labeledStatementSemicolonRecovery() { + CompilationUnit cu = parser.parse(ParseStart.COMPILATION_UNIT, provider("class X{int x(){aaa:X X X;}}")).getResult().get(); + LabeledStmt xxx = cu.getClassByName("X").get().getMethods().get(0).getBody().get().getStatements().get(0).asLabeledStmt(); + assertEquals(UNPARSABLE, xxx.getStatement().getParsed()); + } +} |