/** * {@code i == blockSize} means we are pointing to terminator block, {@code i == blockSize + 1} is valid if terminator block is branching * @see ExplodedGraphWalker#execute */ private ProgramPoint(CFG.IBlock<?> block, int i) { int blockSize = block.elements().size(); Preconditions.checkState(i < blockSize + 2, "CFG Block has %s elements but PP at %s was requested", blockSize, i); this.block = block; this.i = i; this.hashcode = block.id() * 31 + i; }
public Tree syntaxTree() { if (block instanceof CFG.Block) { CFG.Block syntaxCFGblock = (CFG.Block) this.block; if (block.elements().isEmpty()) { return syntaxCFGblock.terminator(); } return syntaxCFGblock.elements().get(Math.min(i, syntaxCFGblock.elements().size() - 1)); } return null; } }
/** * {@code i == blockSize} means we are pointing to terminator block, {@code i == blockSize + 1} is valid if terminator block is branching * @see ExplodedGraphWalker#execute */ private ProgramPoint(CFG.IBlock<?> block, int i) { int blockSize = block.elements().size(); Preconditions.checkState(i < blockSize + 2, "CFG Block has %s elements but PP at %s was requested", blockSize, i); this.block = block; this.i = i; this.hashcode = block.id() * 31 + i; }
public Tree syntaxTree() { if (block instanceof CFG.Block) { CFG.Block syntaxCFGblock = (CFG.Block) this.block; if (block.elements().isEmpty()) { return syntaxCFGblock.terminator(); } return syntaxCFGblock.elements().get(Math.min(i, syntaxCFGblock.elements().size() - 1)); } return null; } }
private boolean isMethodInvocationNode(ExplodedGraph.Node node) { // ProgramPoint#syntaxTree will not always return the correct tree, so we need to go to ProgramPoint#block directly ProgramPoint pp = node.programPoint; if (pp.i < pp.block.elements().size()) { Tree tree = ((CFG.Block) pp.block).elements().get(pp.i); return tree.is(Tree.Kind.METHOD_INVOCATION); } return false; }
private boolean isMethodInvocationNode(ExplodedGraph.Node node) { // ProgramPoint#syntaxTree will not always return the correct tree, so we need to go to ProgramPoint#block directly ProgramPoint pp = node.programPoint; if (pp.i < pp.block.elements().size()) { Tree tree = ((CFG.Block) pp.block).elements().get(pp.i); return tree.is(Tree.Kind.METHOD_INVOCATION); } return false; }