Lines Matching defs:block

81                     // Check only the last statement of a block.
82 const auto& block = stmt.as<Block>();
83 return block.children().size() &&
84 this->visitStatement(*block.children().back());
197 // If closing this block puts us back at the top level, and we haven't
254 // No changes necessary if this statement isn't actually a block.
265 Block& block = inlinedBody->as<Block>();
268 // but no scope. Normally, this is fine, but if this block is used as the statement for a
271 // we add the scope to the outermost block if needed. Zero-statement blocks have similar
274 for (Block* nestedBlock = &block;; ) {
280 // We found a block with multiple (or zero) statements, but no scope? Let's add a scope
281 // to the outermost block.
282 block.setIsScope(true);
286 // This block has exactly one thing inside, and it's not another block. No need to scope
467 auto blockStmts = [&](const Block& block) {
469 result.reserve_back(block.children().size());
470 for (const std::unique_ptr<Statement>& child : block.children()) {
693 // Wrap all of the generated statements in a block. We need a real Block here, so we can't use
779 // inliner might replace a statement with a block containing the statement.
834 Block& block = (*stmt)->as<Block>();
835 if (block.symbolTable()) {
836 fSymbolTableStack.push_back(block.symbolTable());
839 for (std::unique_ptr<Statement>& blockStmt : block.children()) {
850 // - We would need to insert the inlined-body block at the very end of the do-
853 // would skip over the inlined block that evaluates the test expression. There
877 // - We would need to insert the test-expression block at the very beginning of the
878 // for-loop's inner fStatement, and the increment-expression block at the very
885 // that would skip over the inlined block that evaluates the increment expression.