@Override public void visit(CatchClause n, Void arg) { out.println("CatchClause: " + (extended ? n : n.getParameter())); super.visit(n, arg); }
@Override public List<Parameter> parametersExposedToChild(Node child) { if (child == getWrappedNode().getBody()) { return Collections.singletonList(getWrappedNode().getParameter()); } return Collections.emptyList(); } }
@Override public final Optional<Value> solveSymbolAsValue(String name, TypeSolver typeSolver) { SymbolDeclarator sb = JavaParserFactory.getSymbolDeclarator(wrappedNode.getParameter(), typeSolver); Optional<Value> symbolReference = solveWithAsValue(sb, name, typeSolver); if (symbolReference.isPresent()) { // Perform parameter type substitution as needed return symbolReference; } // if nothing is found we should ask the parent context return getParent().solveSymbolAsValue(name, typeSolver); }
@Override public final Optional<Value> solveSymbolAsValue(String name) { SymbolDeclarator sb = JavaParserFactory.getSymbolDeclarator(wrappedNode.getParameter(), typeSolver); Optional<Value> symbolReference = solveWithAsValue(sb, name); if (symbolReference.isPresent()) { // Perform parameter type substitution as needed return symbolReference; } // if nothing is found we should ask the parent context return getParent().solveSymbolAsValue(name); }
@Override public final Optional<Value> solveSymbolAsValue(String name, TypeSolver typeSolver) { SymbolDeclarator sb = JavaParserFactory.getSymbolDeclarator(wrappedNode.getParameter(), typeSolver); Optional<Value> symbolReference = solveWithAsValue(sb, name, typeSolver); if (symbolReference.isPresent()) { // Perform parameter type substitution as needed return symbolReference; } // if nothing is found we should ask the parent context return getParent().solveSymbolAsValue(name, typeSolver); }
public final SymbolReference<? extends ResolvedValueDeclaration> solveSymbol(String name, TypeSolver typeSolver) { SymbolDeclarator sb = JavaParserFactory.getSymbolDeclarator(wrappedNode.getParameter(), typeSolver); SymbolReference<? extends ResolvedValueDeclaration> symbolReference = AbstractJavaParserContext.solveWith(sb, name); if (symbolReference.isSolved()) { return symbolReference; } // if nothing is found we should ask the parent context return getParent().solveSymbol(name, typeSolver); }
public final SymbolReference<? extends ResolvedValueDeclaration> solveSymbol(String name) { SymbolDeclarator sb = JavaParserFactory.getSymbolDeclarator(wrappedNode.getParameter(), typeSolver); SymbolReference<? extends ResolvedValueDeclaration> symbolReference = AbstractJavaParserContext.solveWith(sb, name); if (symbolReference.isSolved()) { return symbolReference; } // if nothing is found we should ask the parent context return getParent().solveSymbol(name); }
public final SymbolReference<? extends ResolvedValueDeclaration> solveSymbol(String name, TypeSolver typeSolver) { SymbolDeclarator sb = JavaParserFactory.getSymbolDeclarator(wrappedNode.getParameter(), typeSolver); SymbolReference<? extends ResolvedValueDeclaration> symbolReference = AbstractJavaParserContext.solveWith(sb, name); if (symbolReference.isSolved()) { return symbolReference; } // if nothing is found we should ask the parent context return getParent().solveSymbol(name, typeSolver); }
@Test public void solveMultiCatchType() { String code = "class A {\n" + " public void foo() {\n" + " try {\n" + " \n" + " } catch (IllegalStateException | IllegalArgumentException e) {\n" + " \n" + " }\n" + " }\n" + " }"; CompilationUnit cu = parseWithTypeSolver(code); CatchClause catchClause = Navigator.findNodeOfGivenClass(cu, CatchClause.class); Type jpType = catchClause.getParameter().getType(); ResolvedType jssType = jpType.resolve(); assertEquals(true, jssType instanceof ResolvedUnionType); } }