Home | History | Annotate | Download | only in javaparser
      1 package com.github.javaparser;
      2 
      3 import com.github.javaparser.ast.CompilationUnit;
      4 import com.github.javaparser.ast.body.MethodDeclaration;
      5 import com.github.javaparser.ast.stmt.LabeledStmt;
      6 import com.github.javaparser.ast.stmt.Statement;
      7 import org.junit.Test;
      8 
      9 import static com.github.javaparser.Providers.provider;
     10 import static com.github.javaparser.ast.Node.Parsedness.UNPARSABLE;
     11 import static org.junit.Assert.assertEquals;
     12 
     13 public 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