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