| package com.github.javaparser.symbolsolver; |
| |
| import com.github.javaparser.JavaParser; |
| import com.github.javaparser.ast.CompilationUnit; |
| import com.github.javaparser.ast.body.MethodDeclaration; |
| import com.github.javaparser.ast.expr.MethodCallExpr; |
| import com.github.javaparser.resolution.types.ResolvedReferenceType; |
| import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade; |
| import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserClassDeclaration; |
| import com.github.javaparser.symbolsolver.model.resolution.TypeSolver; |
| import com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver; |
| import com.github.javaparser.symbolsolver.resolution.typesolvers.JavaParserTypeSolver; |
| import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver; |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| import java.io.File; |
| import java.io.FileNotFoundException; |
| import java.io.IOException; |
| |
| import static org.junit.Assert.assertEquals; |
| |
| public class Issue113 extends AbstractTest { |
| |
| private TypeSolver typeSolver; |
| |
| @Before |
| public void setup() throws IOException { |
| typeSolver = new CombinedTypeSolver(new ReflectionTypeSolver(), new JavaParserTypeSolver(adaptPath(new File("src/test/resources/issue113")))); |
| } |
| |
| @Test |
| public void issue113providedCodeDoesNotCrash() throws FileNotFoundException { |
| String pathToSourceFile = adaptPath("src/test/resources/issue113/com/foo/Widget.java"); |
| CompilationUnit cu = JavaParser.parse(new File(pathToSourceFile)); |
| |
| JavaParserFacade parserFacade = JavaParserFacade.get(typeSolver); |
| MethodDeclaration methodDeclaration = cu.findAll(MethodDeclaration.class).stream() |
| .filter(node -> node.getName().getIdentifier().equals("doSomething")).findAny().orElse(null); |
| methodDeclaration.findAll(MethodCallExpr.class).forEach(parserFacade::solve); |
| } |
| |
| @Test |
| public void issue113superClassIsResolvedCorrectly() throws FileNotFoundException { |
| String pathToSourceFile = adaptPath("src/test/resources/issue113/com/foo/Widget.java"); |
| CompilationUnit cu = JavaParser.parse(new File(pathToSourceFile)); |
| |
| JavaParserClassDeclaration jssExtendedWidget = new JavaParserClassDeclaration(cu.getClassByName("Widget").get(), typeSolver); |
| ResolvedReferenceType superClass = jssExtendedWidget.getSuperClass(); |
| assertEquals("com.foo.base.Widget", superClass.getQualifiedName()); |
| } |
| |
| } |