1package com.github.javaparser; 2 3import com.github.javaparser.ast.CompilationUnit; 4import com.github.javaparser.ast.body.MethodDeclaration; 5import com.github.javaparser.ast.stmt.LabeledStmt; 6import com.github.javaparser.ast.stmt.Statement; 7import org.junit.Test; 8 9import static com.github.javaparser.Providers.provider; 10import static com.github.javaparser.ast.Node.Parsedness.UNPARSABLE; 11import static org.junit.Assert.assertEquals; 12 13public class ParseErrorRecoveryTest { 14 private final JavaParser parser = new JavaParser(); 15 16 @Test 17 public void compilationUnitRecovery() { 18 CompilationUnit cu = parser.parse(ParseStart.COMPILATION_UNIT, provider("XXX")).getResult().get(); 19 assertEquals(UNPARSABLE, cu.getParsed()); 20 } 21 22 @Test 23 public void bodystatementSemicolonRecovery() { 24 MethodDeclaration cu = parser.parse(ParseStart.CLASS_BODY, provider("int x(){X X X;}")).getResult().get().asMethodDeclaration(); 25 Statement xxx = cu.getBody().get().getStatements().get(0); 26 assertEquals(UNPARSABLE, xxx.getParsed()); 27 } 28 29 @Test 30 public void bodystatementClosingBraceRecovery() { 31 MethodDeclaration cu = parser.parse(ParseStart.CLASS_BODY, provider("int x(){X X X}")).getResult().get().asMethodDeclaration(); 32 Statement xxx = cu.getBody().get(); 33 assertEquals(UNPARSABLE, xxx.getParsed()); 34 } 35 36 @Test 37 public void labeledStatementSemicolonRecovery() { 38 CompilationUnit cu = parser.parse(ParseStart.COMPILATION_UNIT, provider("class X{int x(){aaa:X X X;}}")).getResult().get(); 39 LabeledStmt xxx = cu.getClassByName("X").get().getMethods().get(0).getBody().get().getStatements().get(0).asLabeledStmt(); 40 assertEquals(UNPARSABLE, xxx.getStatement().getParsed()); 41 } 42} 43