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);