/** * If the tree is a {@link JCBlock}, returns a list of disjoint matches corresponding to the exact * list of template statements found consecutively; otherwise, returns an empty list. */ @Override public Iterable<BlockTemplateMatch> match(JCTree tree, Context context) { // TODO(lowasser): consider nonconsecutive matches? if (tree instanceof JCBlock) { JCBlock block = (JCBlock) tree; ImmutableList<JCStatement> targetStatements = ImmutableList.copyOf(block.getStatements()); return matchesStartingAnywhere(block, 0, targetStatements, context) .first() .or(List.<BlockTemplateMatch>nil()); } return ImmutableList.of(); }
public BlockTemplateMatch(JCBlock block, Unifier unifier, int start, int end) { super(checkNotNull(block).getStatements().get(start), unifier); this.statements = ImmutableList.copyOf(block.getStatements().subList(start, end)); }
/** Skips the finally block if the result would be empty. */ @Nullable private JCBlock inlineFinallyBlock(Inliner inliner) throws CouldNotResolveImportException { if (getFinallyBlock() != null) { JCBlock block = getFinallyBlock().inline(inliner); if (!block.getStatements().isEmpty()) { return block; } } return null; }
int argumentIndex = context.argumentIndex; context.setArgumentIndex(-1); analyzeSimpleStatements(context, block.getStatements()); context.setArgumentIndex(argumentIndex);
.matches(getLast(block.getStatements()), state)) { block.getStatements().size() == 2 && block.getStatements().get(0).getKind() == Kind.EXPRESSION_STATEMENT; int startPosition; int endPosition; if (expression) { JCExpressionStatement expressionTree = (JCExpressionStatement) block.getStatements().get(0); startPosition = expressionTree.getStartPosition(); endPosition = state.getEndPosition(expressionTree.getExpression()); } else { startPosition = block.getStartPosition(); endPosition = getLast(tryStatement.getBlock().getStatements()).getStartPosition(); if (catchTree.getBlock().getStatements().isEmpty()) { fix.addStaticImport("org.junit.Assert.assertThrows"); fix.replace( .replace( /* endPos= */ catchTree.getBlock().getStatements().get(0).getStartPosition(), (expression ? "" : "}") + ");\n") .replace( state.getEndPosition(getLast(catchTree.getBlock().getStatements())), state.getEndPosition(catchTree), "");
members = ((JCClassDecl) path.getLeaf()).getMembers(); } else { members = ((JCBlock) path.getLeaf()).getStatements();
proxyMethodName, utils.voidType, md.getParameters(), md.getThrows(), utils.make.Block( 0, md.getBody().getStatements() ) );
@Override public void visitTry(JCTry tree) { if (tree.resources.nonEmpty()) { result = makeTwrTry(tree); return; } boolean hasBody = tree.body.getStatements().nonEmpty(); boolean hasCatchers = tree.catchers.nonEmpty(); boolean hasFinally = tree.finalizer != null && tree.finalizer.getStatements().nonEmpty(); if (!hasCatchers && !hasFinally) { result = translate(tree.body); return; } if (!hasBody) { if (hasFinally) { result = translate(tree.finalizer); } else { result = translate(tree.body); } return; } // no optimizations possible super.visitTry(tree); }
@Override public void visitTry(JCTry tree) { if (tree.resources.nonEmpty()) { result = makeTwrTry(tree); return; } boolean hasBody = tree.body.getStatements().nonEmpty(); boolean hasCatchers = tree.catchers.nonEmpty(); boolean hasFinally = tree.finalizer != null && tree.finalizer.getStatements().nonEmpty(); if (!hasCatchers && !hasFinally) { result = translate(tree.body); return; } if (!hasBody) { if (hasFinally) { result = translate(tree.finalizer); } else { result = translate(tree.body); } return; } // no optimizations possible super.visitTry(tree); }
/** * If the tree is a {@link JCBlock}, returns a list of disjoint matches corresponding to the exact * list of template statements found consecutively; otherwise, returns an empty list. */ @Override public Iterable<BlockTemplateMatch> match(JCTree tree, Context context) { // TODO(lowasser): consider nonconsecutive matches? if (tree instanceof JCBlock) { JCBlock block = (JCBlock) tree; ImmutableList<JCStatement> targetStatements = ImmutableList.copyOf(block.getStatements()); return matchesStartingAnywhere(block, 0, targetStatements, context) .first() .or(List.<BlockTemplateMatch>nil()); } return ImmutableList.of(); }
/** * 处理代码块 * * @param block 代码块 */ private void doBlock(JCTree.JCBlock block) { ListBuffer<JCTree.JCStatement> stats = new ListBuffer(); for (JCTree.JCStatement st : block.getStatements()) { ListBuffer<JCTree.JCStatement> ss = visitReturn(st); for (JCTree.JCStatement stat : ss) { stats.append(stat); } } block.stats = stats.toList(); }
public BlockTemplateMatch(JCBlock block, Unifier unifier, int start, int end) { super(checkNotNull(block).getStatements().get(start), unifier); this.statements = ImmutableList.copyOf(block.getStatements().subList(start, end)); }
/** Skips the finally block if the result would be empty. */ @Nullable private JCBlock inlineFinallyBlock(Inliner inliner) throws CouldNotResolveImportException { if (getFinallyBlock() != null) { JCBlock block = getFinallyBlock().inline(inliner); if (!block.getStatements().isEmpty()) { return block; } } return null; }
|| (methodDecl.getBody() != null && methodDecl.getBody().getStatements().isEmpty())) { report(methodDecl, methodDecl.name, JSweetProblem.INVALID_METHOD_BODY_IN_INTERFACE, methodDecl.name, parent == null ? "<no class>" : parent.name);
print(">__e;").println(); printBlockStatements(catcher.body.getStatements()); endIndent().println().printIndent().print("}"); for (JCStatement statement : tryStatement.finalizer.getStatements()) { println().printIndent().print(statement).print(";");
.matches(getLast(block.getStatements()), state)) { block.getStatements().size() == 2 && block.getStatements().get(0).getKind() == Kind.EXPRESSION_STATEMENT; int startPosition; int endPosition; if (expression) { JCExpressionStatement expressionTree = (JCExpressionStatement) block.getStatements().get(0); startPosition = expressionTree.getStartPosition(); endPosition = state.getEndPosition(expressionTree.getExpression()); } else { startPosition = block.getStartPosition(); endPosition = getLast(tryStatement.getBlock().getStatements()).getStartPosition(); if (catchTree.getBlock().getStatements().isEmpty()) { fix.addStaticImport("org.junit.Assert.assertThrows"); fix.replace( .replace( /* endPos= */ catchTree.getBlock().getStatements().get(0).getStartPosition(), (expression ? "" : "}") + ");\n") .replace( state.getEndPosition(getLast(catchTree.getBlock().getStatements())), state.getEndPosition(catchTree), "");
members = ((JCClassDecl) path.getLeaf()).getMembers(); } else { members = ((JCBlock) path.getLeaf()).getStatements();