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()); } }