@Override public String toString() { if (elements.isEmpty()) { return "empty"; } Tree firstElement = elements.get(0); if (firstElement.is(Tree.Kind.LABEL)) { firstElement = elements.get(1); } return firstElement.toString(); } }
private void visitAll(Iterable<? extends Tree> trees) { for (Tree tree : trees) { tree.accept(this); } }
@Override public void visitMemberAccess(MemberAccessTree tree) { boolean functionCall = tree.getParent().is(Kind.FUNCTION_CALL) && ((FunctionCallTree) tree.getParent()).callee() == tree; tree.object().accept(this); classMemberUsageState = new ClassMemberUsageState(); classMemberUsageState.isStatic = tree.isStatic(); classMemberUsageState.isSelfMember = isSelfMember(tree); classMemberUsageState.isField = !functionCall; classMemberUsageState.isConst = classMemberUsageState.isField && tree.isStatic(); tree.member().accept(this); }
public static boolean isDescendant(Tree tree, Tree potentialParent) { Tree parent = tree; while (parent != null && !potentialParent.equals(parent)) { parent = parent.getParent(); } return potentialParent.equals(parent); }
private boolean isSubscribed(Tree tree) { return nodesToVisit.contains(tree.getKind()); }
@Override public void visitMemberAccess(MemberAccessTree tree) { boolean functionCall = tree.getParent().is(Kind.FUNCTION_CALL) && ((FunctionCallTree) tree.getParent()).callee() == tree; tree.object().accept(this); classMemberUsageState = new ClassMemberUsageState(); classMemberUsageState.isStatic = tree.isStatic(); classMemberUsageState.isSelfMember = isSelfMember(tree); classMemberUsageState.isField = !functionCall; classMemberUsageState.isConst = classMemberUsageState.isField && tree.isStatic(); tree.member().accept(this); }
public static boolean isDescendant(Tree tree, Tree potentialParent) { Tree parent = tree; while (parent != null && !potentialParent.equals(parent)) { parent = parent.getParent(); } return potentialParent.equals(parent); }
@Test public void test_branching_tree() { ControlFlowGraph cfg = cfgForBlock("" + "if (a) {" + " qix();" + "}"); CfgBlock block = cfg.start(); assertThat(block instanceof PhpCfgBranchingBlock).isTrue(); PhpCfgBranchingBlock ifBlock = (PhpCfgBranchingBlock) block; assertThat(ifBlock.branchingTree().getKind()).isEqualTo(Tree.Kind.IF_STATEMENT); }
@Override public String toString() { if (elements.isEmpty()) { return "empty"; } Tree firstElement = elements.get(0); if (firstElement.is(Tree.Kind.LABEL)) { firstElement = elements.get(1); } return firstElement.toString(); } }
private void visitAll(Iterable<? extends Tree> trees) { for (Tree tree : trees) { tree.accept(this); } }
private static boolean isInsideForEachExpression(Tree tree) { return tree == ((ForEachStatementTree) tree.getParent()).expression(); }
@Test public void test_start_is_first_block() { ControlFlowGraph cfg = cfgForBlock("" + "foo();" + "if (a) {" + " $x = 1;" + "}"); CfgBlock startBlock = cfg.start(); assertThat(startBlock.elements()).isNotEmpty(); Tree firstElement = startBlock.elements().get(0); assertThat(firstElement.getKind()).isEqualTo(Tree.Kind.EXPRESSION_STATEMENT); ExpressionStatementTree statement = (ExpressionStatementTree) firstElement; assertThat(statement.expression().getKind()).isEqualTo(Tree.Kind.FUNCTION_CALL); }