@Override @Nullable public SyntaxToken lastToken() { List<Tree> trees = getChildren(); for (int index = trees.size() - 1; index >= 0; index--) { SyntaxToken last = trees.get(index).lastToken(); if (last != null) { return last; } } return null; }
@Override @Nullable public SyntaxToken firstToken() { for (Tree child : getChildren()) { SyntaxToken first = child.firstToken(); if (first != null) { return first; } } return null; }
@Override @Nullable public SyntaxToken lastToken() { List<Tree> trees = getChildren(); for (int index = trees.size() - 1; index >= 0; index--) { SyntaxToken last = trees.get(index).lastToken(); if (last != null) { return last; } } return null; }
@Override @Nullable public SyntaxToken firstToken() { for (Tree child : getChildren()) { SyntaxToken first = child.firstToken(); if (first != null) { return first; } } return null; }
private Tree createParentLink(JavaTree topParent) { parentList.push(topParent); while (!parentList.isEmpty()) { JavaTree parent = parentList.pop(); if (!parent.isLeaf()) { for (Tree nextTree : parent.getChildren()) { JavaTree next = (JavaTree) nextTree; if (next != null) { next.setParent(parent); parentList.push(next); } } } } return topParent; } }
private Tree createParentLink(JavaTree topParent) { parentList.push(topParent); while (!parentList.isEmpty()) { JavaTree parent = parentList.pop(); if (!parent.isLeaf()) { for (Tree nextTree : parent.getChildren()) { JavaTree next = (JavaTree) nextTree; if (next != null) { next.setParent(parent); parentList.push(next); } } } } return topParent; } }
private Stream<UastNode> visit(Tree tree) { UastNode uastNode = null; if (tree.is(Tree.Kind.TOKEN)) { return visitToken(tree); } else if (!tree.is(Tree.Kind.INFERED_TYPE)) { List<Tree> children = ((JavaTree) tree).getChildren(); if (!children.isEmpty()) { uastNode = newUastNode(tree, children.stream().flatMap(this::visit).filter(Objects::nonNull).collect(Collectors.toList())); } } if (uastNode != null) { treeUastNodeMap.put(tree, uastNode); } return uastNode == null ? Stream.empty() : Stream.of(uastNode); }
private void visitChildren(Tree tree) { JavaTree javaTree = (JavaTree) tree; if (!javaTree.isLeaf()) { for (Tree next : javaTree.getChildren()) { if (next != null) { visit(next); } } } }
private void visitChildren(Tree tree) { JavaTree javaTree = (JavaTree) tree; if (!javaTree.isLeaf()) { for (Tree next : javaTree.getChildren()) { if (next != null) { visit(next); } } } }
private void visitChildren(Tree tree) { JavaTree javaTree = (JavaTree) tree; if (!javaTree.isLeaf()) { for (Tree next : javaTree.getChildren()) { if (next != null) { visit(next); } } } }
private void visitChildren(Tree tree) { JavaTree javaTree = (JavaTree) tree; if (!javaTree.isLeaf()) { for (Tree next : javaTree.getChildren()) { if (next != null) { visit(next); } } } }
private static boolean containsChildrenOfKind(JavaTree tree, Tree.Kind... kinds) { if (Arrays.asList(kinds).contains(tree.kind())) { return true; } if (!tree.isLeaf()) { for (Tree javaTree : tree.getChildren()) { if (javaTree != null && containsChildrenOfKind((JavaTree) javaTree, kinds)) { return true; } } } return false; }
private static StatementTree getStatementTree(IfStatementTree ifStatementTree) { StatementTree elseStatementOrNextStatement = ifStatementTree.elseStatement(); if (elseStatementOrNextStatement == null) { JavaTree parent = (JavaTree) ifStatementTree.parent(); List<Tree> children = parent.getChildren(); int indexOfIf = children.indexOf(ifStatementTree); if (indexOfIf < children.size() - 1) { // Defensive, this condition should always be true as if necessarily followed by a statement or a token. Tree next = children.get(indexOfIf + 1); if(!next.is(Kind.TOKEN)) { elseStatementOrNextStatement = (StatementTree) next; } } } return elseStatementOrNextStatement; }
private static boolean containsChildrenOfKind(JavaTree tree, Tree.Kind... kinds) { if (Arrays.asList(kinds).contains(tree.kind())) { return true; } if (!tree.isLeaf()) { for (Tree javaTree : tree.getChildren()) { if (javaTree != null && containsChildrenOfKind((JavaTree) javaTree, kinds)) { return true; } } } return false; }
void handleMissingTypes(Tree tree) { parentList.push((JavaTree) tree); while (!parentList.isEmpty()) { JavaTree parent = parentList.pop(); if (parent instanceof AbstractTypedTree) { ((AbstractTypedTree) parent).completeMissingType(); } if (!parent.isLeaf()) { for (Tree nextTree : parent.getChildren()) { JavaTree next = (JavaTree) nextTree; if (next != null) { next.setParent(parent); parentList.push(next); } } } } } }
void handleMissingTypes(Tree tree) { parentList.push((JavaTree) tree); while (!parentList.isEmpty()) { JavaTree parent = parentList.pop(); if (parent instanceof AbstractTypedTree) { ((AbstractTypedTree) parent).completeMissingType(); } if (!parent.isLeaf()) { for (Tree nextTree : parent.getChildren()) { JavaTree next = (JavaTree) nextTree; if (next != null) { next.setParent(parent); parentList.push(next); } } } } } }
private void prependChild(AstNode astNode) { Preconditions.checkState(getAstNode() == this, "Legacy strongly typed node"); List<AstNode> children = getChildren(); if (children.isEmpty()) { // addChild() will take care of everything addChild(astNode); } else { AstNodeReflector.setParent(astNode, this); children.add(0, astNode); // Reset the childIndex field of all children for (int i = 0; i < children.size(); i++) { AstNodeReflector.setChildIndex(children.get(i), i); } } }
private static StatementTree getStatementTree(IfStatementTree ifStatementTree) { StatementTree elseStatementOrNextStatement = ifStatementTree.elseStatement(); if (elseStatementOrNextStatement == null) { JavaTree parent = (JavaTree) ifStatementTree.parent(); List<Tree> children = parent.getChildren(); int indexOfIf = children.indexOf(ifStatementTree); if (indexOfIf < children.size() - 1) { // Defensive, this condition should always be true as if necessarily followed by a statement or a token. Tree next = children.get(indexOfIf + 1); if(!next.is(Kind.TOKEN)) { elseStatementOrNextStatement = (StatementTree) next; } } } return elseStatementOrNextStatement; }
private void visitChildren(Tree tree) { JavaTree javaTree = (JavaTree) tree; if (!javaTree.isLeaf()) { for (Tree next : javaTree.getChildren()) { if (next != null && !isExcluded(next)) { visit(next); } } } }
private void visitChildren(Tree tree) { JavaTree javaTree = (JavaTree) tree; if (!javaTree.isLeaf()) { for (Tree next : javaTree.getChildren()) { if (next != null && !isExcluded(next)) { visit(next); } } } }