public boolean visit(SimpleName node) { if (fIgnoreBinding != null && Bindings.equals(fIgnoreBinding, node.resolveBinding())) return false; if (fIgnoreRange != null && fIgnoreRange.covers(node)) return false; fScope.addName(node.getIdentifier()); return false; }
public boolean visit(FunctionInvocation node) { Expression receiver = node.getExpression(); if (receiver == null) { SimpleName name = node.getName(); if (fIgnoreBinding == null || (name != null && !Bindings.equals(fIgnoreBinding, name.resolveBinding()))) node.getName().accept(this); } else { receiver.accept(this); } accept(node.arguments()); return false; }
public boolean visit(SimpleName node) { IBinding binding = node.resolveBinding(); if (binding == null || binding.getKind() != fBinding.getKind()) { return false; } binding = getDeclaration(binding); if (fBinding == binding) { fResult.add(node); } else if (binding.getKind() == IBinding.METHOD) { IFunctionBinding curr = (IFunctionBinding) binding; IFunctionBinding methodBinding = (IFunctionBinding) fBinding; if (methodBinding.overrides(curr) || curr.overrides(methodBinding)) { fResult.add(node); } } return false; }
/** * Find all nodes connected to the given name node. If the node has a binding then all nodes * connected to this binding are returned. If the node has no binding, then all nodes that also * miss a binding and have the same name are returned. * * @param root The root of the AST tree to search * @param name The node to find linked nodes for * @return Return */ public static SimpleName[] findByNode(ASTNode root, SimpleName name) { IBinding binding = name.resolveBinding(); if (binding != null) { return findByBinding(root, binding); } SimpleName[] names = findByProblems(root, name); if (names != null) { return names; } int parentKind = name.getParent().getNodeType(); if (parentKind == ASTNode.LABELED_STATEMENT || parentKind == ASTNode.BREAK_STATEMENT || parentKind == ASTNode.CONTINUE_STATEMENT) { ArrayList res = new ArrayList(); LabelFinder nodeFinder = new LabelFinder(name, res); root.accept(nodeFinder); return (SimpleName[]) res.toArray(new SimpleName[res.size()]); } return new SimpleName[] {name}; }