void ByteCodeVisitor::initLocals(BlockNode *blockNode) { if (blockNode == 0) return; initVars(blockNode->scope()); for (uint32_t i = 0; i < blockNode->nodes(); ++i) { AstNode *n = blockNode->nodeAt(i); if (n->isBlockNode()) { initLocals(blockNode); } else if (n->isIfNode()) { IfNode *ifNode = n->asIfNode(); initLocals(ifNode->thenBlock()); initLocals(ifNode->elseBlock()); } else if (n->isWhileNode()) { WhileNode *whileNode = n->asWhileNode(); initLocals(whileNode->loopBlock()); } else if (n->isForNode()) { ForNode *forNode = n->asForNode(); initLocals(forNode->body()); } } initChildFunctions(blockNode->scope()); }