Fixes for nested if/elif statements

This commit is contained in:
Darryl Pogue
2011-01-05 13:05:01 -08:00
parent df491b0108
commit 703fbdb127

View File

@@ -34,9 +34,13 @@ PycRef<ASTNode> BuildFromCode(PycRef<PycCode> code, PycModule* mod)
else_pop = false;
PycRef<ASTBlock> prev = curblock;
blocks.pop();
curblock = blocks.top();
curblock->append(prev.cast<ASTNode>());
while (prev->end() < pos && prev->blktype() != ASTBlock::BLK_MAIN) {
blocks.pop();
curblock = blocks.top();
curblock->append(prev.cast<ASTNode>());
prev = curblock;
}
}
switch (opcode) {
@@ -245,6 +249,13 @@ PycRef<ASTNode> BuildFromCode(PycRef<PycCode> code, PycModule* mod)
stack.push(new ASTCompare(left, right, operand));
}
break;
case Pyc::DELETE_ATTR_A:
{
PycRef<ASTNode> name = stack.top();
stack.pop();
curblock->append(new ASTDelete(new ASTBinary(name, new ASTName(code->getName(operand)), ASTBinary::BIN_ATTR)));
}
break;
case Pyc::DELETE_GLOBAL_A:
case Pyc::DELETE_NAME_A:
{