protected void consumeStatementDo() { // DoStatement ::= 'do' Statement 'while' '(' Expression ')' ';' //the 'while' pushes a value on this.intStack that we need to remove this.intPtr--; Statement statement = (Statement) this.astStack[this.astPtr]; this.expressionLengthPtr--; this.astStack[this.astPtr] = new DoStatement( this.expressionStack[this.expressionPtr--], statement, this.intStack[this.intPtr--], this.endStatementPosition); }
@Override public void endVisit(DoStatement x, BlockScope scope) { try { SourceInfo info = makeSourceInfo(x); JExpression condition = pop(x.condition); JStatement action = pop(x.action); push(new JDoStatement(info, condition, action)); } catch (Throwable e) { throw translateException(x, e); } }
@Override public boolean visit(DoStatement node, BlockScope scope) { fixPositions(setGeneratedBy(node, source)); return super.visit(node, scope); }
/** * @see org.eclipse.jdt.internal.compiler.ASTVisitor#visit(org.eclipse.jdt.internal.compiler.ast.DoStatement, org.eclipse.jdt.internal.compiler.lookup.BlockScope) */ public boolean visit(DoStatement doStatement, BlockScope scope) { this.scribe.printNextToken(TerminalTokens.TokenNamedo); final int line = this.scribe.line; final Statement action = doStatement.action; if (action != null) { if (action instanceof Block) { formatLeftCurlyBrace(line, this.preferences.brace_position_for_block); action.traverse(this, scope); } else if (action instanceof EmptyStatement) { /* * This is an empty statement */ formatNecessaryEmptyStatement(); } else { this.scribe.printNewLine(); this.scribe.indent(); action.traverse(this, scope); if (action instanceof Expression) { this.scribe.printNextToken(TerminalTokens.TokenNameSEMICOLON, this.preferences.insert_space_before_semicolon); this.scribe.printComment(CodeFormatter.K_UNKNOWN, Scribe.BASIC_TRAILING_COMMENT); } this.scribe.printNewLine(); this.scribe.unIndent(); } } else { /* * This is an empty statement */ formatNecessaryEmptyStatement(); } if (this.preferences.insert_new_line_before_while_in_do_statement) { this.scribe.printNewLine(); } this.scribe.printNextToken(TerminalTokens.TokenNamewhile, this.preferences.insert_space_after_closing_brace_in_block); this.scribe.printNextToken(TerminalTokens.TokenNameLPAREN, this.preferences.insert_space_before_opening_paren_in_while); if (this.preferences.insert_space_after_opening_paren_in_while) { this.scribe.space(); } doStatement.condition.traverse(this, scope); this.scribe.printNextToken(TerminalTokens.TokenNameRPAREN, this.preferences.insert_space_before_closing_paren_in_while); this.scribe.printNextToken(TerminalTokens.TokenNameSEMICOLON, this.preferences.insert_space_before_semicolon); this.scribe.printComment(CodeFormatter.K_UNKNOWN, Scribe.BASIC_TRAILING_COMMENT); return false; }
@Override public boolean visit(DoStatement node, BlockScope scope) { setGeneratedBy(node, source); applyOffsetASTNode(node); return super.visit(node, scope); }