• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.github.javaparser.symbolsolver;
2 
3 import com.github.javaparser.ast.CompilationUnit;
4 import com.github.javaparser.ast.body.MethodDeclaration;
5 import com.github.javaparser.ast.expr.MethodCallExpr;
6 import com.github.javaparser.resolution.types.ResolvedReferenceType;
7 import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade;
8 import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserClassDeclaration;
9 import com.github.javaparser.symbolsolver.model.resolution.TypeSolver;
10 import com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver;
11 import com.github.javaparser.symbolsolver.resolution.typesolvers.JavaParserTypeSolver;
12 import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver;
13 import com.github.javaparser.symbolsolver.utils.LeanParserConfiguration;
14 import org.junit.jupiter.api.BeforeEach;
15 import org.junit.jupiter.api.Test;
16 
17 import java.io.IOException;
18 import java.nio.file.Path;
19 
20 import static com.github.javaparser.StaticJavaParser.parse;
21 import static org.junit.jupiter.api.Assertions.assertEquals;
22 
23 class Issue113Test extends AbstractSymbolResolutionTest {
24 
25     private TypeSolver typeSolver;
26 
27     @BeforeEach
setup()28     void setup() {
29         typeSolver = new CombinedTypeSolver(new ReflectionTypeSolver(), new JavaParserTypeSolver(adaptPath("src/test/resources/issue113"), new LeanParserConfiguration()));
30     }
31 
32     @Test
issue113providedCodeDoesNotCrash()33     void issue113providedCodeDoesNotCrash() throws IOException {
34         Path pathToSourceFile = adaptPath("src/test/resources/issue113/com/foo/Widget.java");
35         CompilationUnit cu = parse(pathToSourceFile);
36 
37         JavaParserFacade parserFacade = JavaParserFacade.get(typeSolver);
38         MethodDeclaration methodDeclaration = cu.findAll(MethodDeclaration.class).stream()
39                 .filter(node -> node.getName().getIdentifier().equals("doSomething")).findAny().orElse(null);
40         methodDeclaration.findAll(MethodCallExpr.class).forEach(parserFacade::solve);
41     }
42 
43     @Test
issue113superClassIsResolvedCorrectly()44     void issue113superClassIsResolvedCorrectly() throws IOException {
45         Path pathToSourceFile = adaptPath("src/test/resources/issue113/com/foo/Widget.java");
46         CompilationUnit cu = parse(pathToSourceFile);
47 
48         JavaParserClassDeclaration jssExtendedWidget = new JavaParserClassDeclaration(cu.getClassByName("Widget").get(), typeSolver);
49         ResolvedReferenceType superClass = jssExtendedWidget.getSuperClass();
50         assertEquals("com.foo.base.Widget", superClass.getQualifiedName());
51     }
52 
53 }
54