• 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.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