Java源码示例:org.codehaus.groovy.ast.stmt.ContinueStatement
示例1
public void visitContinueStatement(ContinueStatement statement) {
String label = statement.getLabel();
boolean hasNamedLabel = label != null;
if (!hasNamedLabel && !inLoop) {
addError("the continue statement is only allowed inside loops", statement);
}
if (label != null) {
boolean found = false;
for (String element : visitedLabels) {
if (element.equals(label)) {
found = true;
break;
}
}
if (!found) continueLabels.add(statement);
}
super.visitContinueStatement(statement);
}
示例2
/**
* @return true if the block falls through, i.e. no break/return
*/
private boolean fallsThrough(Statement statement) {
if (statement instanceof EmptyStatement) {
return true;
}
if (statement instanceof ReturnStatement) { // from ReturnAdder
return false;
}
BlockStatement block = (BlockStatement) statement; // currently only possibility
if (block.getStatements().size() == 0) {
return true;
}
Statement last = DefaultGroovyMethods.last(block.getStatements());
boolean completesAbruptly = last instanceof ReturnStatement || last instanceof BreakStatement || last instanceof ThrowStatement || last instanceof ContinueStatement;
return !completesAbruptly;
}
示例3
public void visitContinueStatement(ContinueStatement node) {
pushASTNode(node);
try {
super.visitContinueStatement(node);
} finally {
popASTNode();
}
}
示例4
private void init() {
visitedLabels = new LinkedList<String>();
continueLabels = new LinkedList<ContinueStatement>();
breakLabels = new LinkedList<BreakStatement>();
inLoop = false;
inSwitch = false;
}
示例5
public void writeContinue(final ContinueStatement statement) {
controller.getAcg().onLineNumber(statement, "visitContinueStatement");
writeStatementLabel(statement);
String name = statement.getLabel();
Label continueLabel = controller.getCompileStack().getContinueLabel();
if (name != null) continueLabel = controller.getCompileStack().getNamedContinueLabel(name);
controller.getCompileStack().applyFinallyBlocks(continueLabel, false);
controller.getMethodVisitor().visitJumpInsn(GOTO, continueLabel);
}
示例6
@Override
public void visitContinueStatement(ContinueStatement node) {
if (isInside(node, line, column)) {
super.visitContinueStatement(node);
}
}
示例7
@Override
public void visitContinueStatement(final ContinueStatement statement) {
super.visitContinueStatement(statement);
tryFind(ContinueStatement.class, statement);
}
示例8
@Override
public void visitContinueStatement(final ContinueStatement statement) {
pushContext(statement);
super.visitContinueStatement(statement);
popContext();
}
示例9
@Override
public void visitContinueStatement(final ContinueStatement statement) {
assertStatementAuthorized(statement);
}
示例10
@Override
public void visitContinueStatement(final ContinueStatement statement) {
super.visitContinueStatement(statement);
trn.visitContinueStatement(statement);
}
示例11
@Override
public void visitContinueStatement(ContinueStatement statement) {
}
示例12
@Override
public void visitContinueStatement(ContinueStatement statement) {
visitStatement(statement);
super.visitContinueStatement(statement);
}
示例13
@Override
public void visitContinueStatement(final ContinueStatement statement) {
controller.getStatementWriter().writeContinue(statement);
}
示例14
void visitContinueStatement(ContinueStatement statement);