private static JCTry enclosingTry(VisitorState state) { Tree prev = null; for (Tree parent : state.getPath()) { switch (parent.getKind()) { case METHOD: case LAMBDA_EXPRESSION: return null; case TRY: JCTry tryStatement = (JCTry) parent; return tryStatement.getBlock().equals(prev) ? tryStatement : null; default: // fall out } prev = parent; } return null; } }
} else if (currentNode instanceof JCTry) { JCTry tryNode = (JCTry) currentNode; collectExecutionPaths(tryNode.getBlock(), allExecutionPaths, currentPaths, activeBreaks);
private static void analyzeTry(SourceContext context, JCTree.JCTry tryExpr) throws IOException { JCTree.JCBlock block = tryExpr.getBlock(); List<JCTree> resources = tryExpr.getResources(); List<JCTree.JCCatch> catches = tryExpr.getCatches(); JCTree.JCBlock lyBlock = tryExpr.getFinallyBlock(); if (nonNull(resources)) { for (JCTree resource : resources) { analyzeParsedTree(context, resource); } } analyzeParsedTree(context, block); if (nonNull(catches)) { for (JCTree.JCCatch jcCatch : catches) { JCTree.JCVariableDecl parameter = jcCatch.getParameter(); analyzeParsedTree(context, parameter); JCTree.JCBlock catchBlock = jcCatch.getBlock(); analyzeParsedTree(context, catchBlock); } } analyzeParsedTree(context, lyBlock); }
private static JCTry enclosingTry(VisitorState state) { Tree prev = null; for (Tree parent : state.getPath()) { switch (parent.getKind()) { case METHOD: case LAMBDA_EXPRESSION: return null; case TRY: JCTry tryStatement = (JCTry) parent; return tryStatement.getBlock().equals(prev) ? tryStatement : null; default: // fall out } prev = parent; } return null; } }
@Override public void visitTry(JCTry node) { Try t = new Try(); t.rawBody(toTree(node.getBlock())); t.rawFinally(toTree(node.getFinallyBlock())); fillList(node.getCatches(), t.rawCatches()); set(node, t); }
@Override public void visitTry(JCTry node) { Try t = new Try(); t.rawBody(toTree(node.getBlock())); t.rawFinally(toTree(node.getFinallyBlock())); fillList(node.getCatches(), t.rawCatches()); set(node, t); }
@Override public void visitTry(JCTry node) { Try t = new Try(); t.rawBody(toTree(node.getBlock())); t.rawFinally(toTree(node.getFinallyBlock())); fillList(node.getCatches(), t.rawCatches()); set(node, t); }