@Test public void resolveDeclaredFieldReference() throws ParseException { CompilationUnit cu = parseSample("ReferencesToField"); com.github.javaparser.ast.body.ClassOrInterfaceDeclaration referencesToField = Navigator.demandClass(cu, "ReferencesToField"); MethodDeclaration method1 = Navigator.demandMethod(referencesToField, "method1"); ExpressionStmt stmt = (ExpressionStmt) method1.getBody().get().getStatements().get(0); AssignExpr assignExpr = (AssignExpr) stmt.getExpression(); SymbolSolver symbolSolver = new SymbolSolver(typeSolver); SymbolReference symbolReference = symbolSolver.solveSymbol("i", assignExpr.getTarget()); assertEquals(true, symbolReference.isSolved()); assertEquals("i", symbolReference.getCorrespondingDeclaration().getName()); assertEquals(true, symbolReference.getCorrespondingDeclaration().isField()); }
@Test public void resolveParameterReference() throws ParseException { CompilationUnit cu = parseSample("ReferencesToParameter"); com.github.javaparser.ast.body.ClassOrInterfaceDeclaration referencesToField = Navigator.demandClass(cu, "ReferenceToParameter"); MethodDeclaration method1 = Navigator.demandMethod(referencesToField, "aMethod"); NameExpr foo = Navigator.findNameExpression(method1, "foo"); SymbolSolver symbolSolver = new SymbolSolver(typeSolver); SymbolReference symbolReference = symbolSolver.solveSymbol("foo", foo); assertEquals(true, symbolReference.isSolved()); assertEquals("foo", symbolReference.getCorrespondingDeclaration().getName()); assertEquals(true, symbolReference.getCorrespondingDeclaration().isParameter()); }
@Test public void accessEnumFieldThroughThis() throws ParseException { CompilationUnit cu = parseSample("AccessEnumMemberThroughThis"); com.github.javaparser.ast.body.EnumDeclaration enumDecl = Navigator.demandEnum(cu, "AccessEnumMemberThroughThis"); MethodDeclaration method = Navigator.demandMethod(enumDecl, "getLabel"); SimpleName expression = Navigator.findSimpleName(method, "label"); SymbolReference ref = JavaParserFacade.get(new ReflectionTypeSolver()).solve(expression); assertTrue(ref.isSolved()); assertEquals("label", ref.getCorrespondingDeclaration().getName()); }
@Test public void resolveInheritedFieldReference() throws ParseException { CompilationUnit cu = parseSample("ReferencesToField"); com.github.javaparser.ast.body.ClassOrInterfaceDeclaration referencesToField = Navigator.demandClass(cu, "ReferencesToFieldExtendingClass"); MethodDeclaration method1 = Navigator.demandMethod(referencesToField, "method2"); ExpressionStmt stmt = (ExpressionStmt) method1.getBody().get().getStatements().get(0); AssignExpr assignExpr = (AssignExpr) stmt.getExpression(); SymbolSolver symbolSolver = new SymbolSolver(typeSolver); SymbolReference symbolReference = symbolSolver.solveSymbol("i", assignExpr.getTarget()); assertEquals(true, symbolReference.isSolved()); assertEquals("i", symbolReference.getCorrespondingDeclaration().getName()); assertEquals(true, symbolReference.getCorrespondingDeclaration().isField()); }