blob: e57a2e1be5056fa842239b5aaa2e4b78b68543f4 [file] [log] [blame]
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());
}
}