aboutsummaryrefslogtreecommitdiffstats
path: root/javaparser-testing/src/test/java/com/github/javaparser/ParseErrorRecoveryTest.java
diff options
context:
space:
mode:
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.java42
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());
+ }
+}