@Override public void visitRestElement(RestElementTree tree) { scan(tree.element()); }
private static boolean hasUsedRestElement(ObjectBindingPatternTree objectBindingPattern) { SeparatedList<BindingElementTree> elements = objectBindingPattern.elements(); BindingElementTree lastElement = elements.get(elements.size() - 1); if (lastElement.is(Kind.REST_ELEMENT) && ((RestElementTree) lastElement).element().is(Kind.BINDING_IDENTIFIER)) { IdentifierTree restVariable = (IdentifierTree) ((RestElementTree) lastElement).element(); Optional<Symbol> symbol = restVariable.symbol(); return symbol.isPresent() && symbol.get().usages().size() > 1; } return false; }
public List<IdentifierTree> parameterIdentifiers() { List<IdentifierTree> identifiers = Lists.newArrayList(); for (Tree parameter : parameters) { if (parameter.is(Tree.Kind.BINDING_IDENTIFIER)) { identifiers.add((IdentifierTree) parameter); } else if (parameter.is(Tree.Kind.INITIALIZED_BINDING_ELEMENT)) { identifiers.addAll(((InitializedBindingElementTreeImpl) parameter).bindingIdentifiers()); } else if (parameter.is(Tree.Kind.OBJECT_BINDING_PATTERN)) { identifiers.addAll(((ObjectBindingPatternTreeImpl) parameter).bindingIdentifiers()); } else if (parameter.is(Kind.REST_ELEMENT)) { identifiers.add((IdentifierTree) ((RestElementTree) parameter).element()); } else { identifiers.addAll(((ArrayBindingPatternTreeImpl) parameter).bindingIdentifiers()); } } return identifiers; }
bindingIdentifiers.add((IdentifierTree) ((RestElementTree) element.get()).element());