/** * Find all nodes connected to the given binding. e.g. Declaration of a field and all references. * For types this includes also the constructor declaration, for methods also overridden methods * or methods overriding (if existing in the same AST) * @param root The root of the AST tree to search * @param binding The binding of the searched nodes * @return Return */ public static SimpleName[] findByBinding(ASTNode root, IBinding binding) { ArrayList<SimpleName> res= new ArrayList<>(); BindingFinder nodeFinder= new BindingFinder(binding, res); root.accept(nodeFinder); return res.toArray(new SimpleName[res.size()]); }
@Override public boolean visit(SimpleName node) { if (node.getAST().apiLevel() >= AST.JLS10 && node.isVar()) { return false; } IBinding binding= node.resolveBinding(); if (binding == null) { return false; } binding= getDeclaration(binding); if (fBinding == binding) { fResult.add(node); } else if (binding.getKind() != fBinding.getKind()) { return false; } else if (binding.getKind() == IBinding.METHOD) { IMethodBinding curr= (IMethodBinding) binding; IMethodBinding methodBinding= (IMethodBinding) fBinding; if (methodBinding.overrides(curr) || curr.overrides(methodBinding)) { fResult.add(node); } } return false; }
@Override public boolean visit(SimpleName node) { IBinding binding= node.resolveBinding(); if (binding == null) { return false; } binding= getDeclaration(binding); if (fBinding == binding) { fResult.add(node); } else if (binding.getKind() != fBinding.getKind()) { return false; } else if (binding.getKind() == IBinding.METHOD) { IMethodBinding curr= (IMethodBinding) binding; IMethodBinding methodBinding= (IMethodBinding) fBinding; if (methodBinding.overrides(curr) || curr.overrides(methodBinding)) { fResult.add(node); } } 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) { IMethodBinding curr= (IMethodBinding) binding; IMethodBinding methodBinding= (IMethodBinding) fBinding; if (methodBinding.overrides(curr) || curr.overrides(methodBinding)) { fResult.add(node); } } return false; }
/** * Find all nodes connected to the given binding. e.g. Declaration of a field and all references. * For types this includes also the constructor declaration, for methods also overridden methods * or methods overriding (if existing in the same AST) * @param root The root of the AST tree to search * @param binding The binding of the searched nodes * @return Return */ public static SimpleName[] findByBinding(ASTNode root, IBinding binding) { ArrayList res= new ArrayList(); BindingFinder nodeFinder= new BindingFinder(binding, res); root.accept(nodeFinder); return (SimpleName[]) res.toArray(new SimpleName[res.size()]); }
/** * Find all nodes connected to the given binding. e.g. Declaration of a field and all references. * For types this includes also the constructor declaration, for methods also overridden methods * or methods overriding (if existing in the same AST) * @param root The root of the AST tree to search * @param binding The binding of the searched nodes * @return Return */ public static SimpleName[] findByBinding(ASTNode root, IBinding binding) { ArrayList<SimpleName> res= new ArrayList<>(); BindingFinder nodeFinder= new BindingFinder(binding, res); root.accept(nodeFinder); return res.toArray(new SimpleName[res.size()]); }
public BindingFinder(IBinding binding, ArrayList<SimpleName> result) { super(true); fBinding= getDeclaration(binding); fResult= result; }
public BindingFinder(IBinding binding, ArrayList<SimpleName> result) { super(true); fBinding= getDeclaration(binding); fResult= result; }
public BindingFinder(IBinding binding, ArrayList result) { super(true); fBinding= getDeclaration(binding); fResult= result; }