1 package com.github.javaparser.symbolsolver; 2 3 import com.github.javaparser.ast.CompilationUnit; 4 import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration; 5 import com.github.javaparser.ast.expr.Expression; 6 import com.github.javaparser.ast.expr.MethodCallExpr; 7 import com.github.javaparser.ast.stmt.ExpressionStmt; 8 import com.github.javaparser.symbolsolver.javaparser.Navigator; 9 import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade; 10 import com.github.javaparser.symbolsolver.model.resolution.TypeSolver; 11 import com.github.javaparser.symbolsolver.resolution.AbstractResolutionTest; 12 import com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver; 13 import com.github.javaparser.symbolsolver.resolution.typesolvers.JavaParserTypeSolver; 14 import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver; 15 import com.github.javaparser.symbolsolver.utils.LeanParserConfiguration; 16 import org.junit.jupiter.api.BeforeEach; 17 import org.junit.jupiter.api.Test; 18 19 import java.nio.file.Path; 20 21 import static org.junit.jupiter.api.Assertions.assertEquals; 22 23 class Issue144Test extends AbstractResolutionTest { 24 25 private TypeSolver typeSolver; 26 27 @BeforeEach setup()28 void setup() { 29 Path srcDir = adaptPath("src/test/resources/issue144"); 30 typeSolver = new JavaParserTypeSolver(srcDir, new LeanParserConfiguration()); 31 } 32 33 @Test issue144()34 void issue144() { 35 CompilationUnit cu = parseSampleWithStandardExtension("issue144/HelloWorld"); 36 ClassOrInterfaceDeclaration clazz = Navigator.demandClass(cu, "HelloWorld"); 37 ExpressionStmt expressionStmt = (ExpressionStmt)clazz.getMethodsByName("main").get(0).getBody().get().getStatement(0); 38 MethodCallExpr methodCallExpr = (MethodCallExpr) expressionStmt.getExpression(); 39 Expression firstParameter = methodCallExpr.getArgument(0); 40 JavaParserFacade javaParserFacade = JavaParserFacade.get(typeSolver); 41 42 assertEquals(true, javaParserFacade.solve(firstParameter).isSolved()); 43 assertEquals(true, javaParserFacade.solve(firstParameter).getCorrespondingDeclaration().isField()); 44 assertEquals("hw", javaParserFacade.solve(firstParameter).getCorrespondingDeclaration().getName()); 45 } 46 47 @Test issue144WithReflectionTypeSolver()48 void issue144WithReflectionTypeSolver() { 49 CompilationUnit cu = parseSampleWithStandardExtension("issue144/HelloWorld"); 50 ClassOrInterfaceDeclaration clazz = Navigator.demandClass(cu, "HelloWorld"); 51 ExpressionStmt expressionStmt = (ExpressionStmt)clazz.getMethodsByName("main").get(0).getBody().get().getStatement(0); 52 MethodCallExpr methodCallExpr = (MethodCallExpr) expressionStmt.getExpression(); 53 Expression firstParameter = methodCallExpr.getArgument(0); 54 JavaParserFacade javaParserFacade = JavaParserFacade.get(new ReflectionTypeSolver(true)); 55 56 assertEquals(true, javaParserFacade.solve(firstParameter).isSolved()); 57 } 58 59 @Test issue144WithCombinedTypeSolver()60 void issue144WithCombinedTypeSolver() { 61 CompilationUnit cu = parseSampleWithStandardExtension("issue144/HelloWorld"); 62 ClassOrInterfaceDeclaration clazz = Navigator.demandClass(cu, "HelloWorld"); 63 ExpressionStmt expressionStmt = (ExpressionStmt)clazz.getMethodsByName("main").get(0).getBody().get().getStatement(0); 64 MethodCallExpr methodCallExpr = (MethodCallExpr) expressionStmt.getExpression(); 65 Expression firstParameter = methodCallExpr.getArgument(0); 66 JavaParserFacade javaParserFacade = JavaParserFacade.get(new CombinedTypeSolver(typeSolver, new ReflectionTypeSolver(true))); 67 68 assertEquals(true, javaParserFacade.solve(firstParameter).isSolved()); 69 } 70 } 71