fix: bug in If_stmt
This commit is contained in:
@ -170,6 +170,8 @@ std::any EvalVisitor::visitFlow_stmt(Python3Parser::Flow_stmtContext *ctx) {
|
||||
if (ctx->break_stmt()) return visitBreak_stmt(ctx->break_stmt());
|
||||
if (ctx->continue_stmt()) return visitContinue_stmt(ctx->continue_stmt());
|
||||
if (ctx->return_stmt()) return visitReturn_stmt(ctx->return_stmt());
|
||||
throw FatalError("Unknown flow statement");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitBreak_stmt(Python3Parser::Break_stmtContext *ctx) {
|
||||
@ -198,6 +200,8 @@ std::any EvalVisitor::visitCompound_stmt(
|
||||
if (ctx->if_stmt()) return visitIf_stmt(ctx->if_stmt());
|
||||
if (ctx->while_stmt()) return visitWhile_stmt(ctx->while_stmt());
|
||||
if (ctx->funcdef()) return visitFuncdef(ctx->funcdef());
|
||||
throw FatalError("Unknown compound statement");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::any EvalVisitor::visitIf_stmt(Python3Parser::If_stmtContext *ctx) {
|
||||
@ -209,7 +213,7 @@ std::any EvalVisitor::visitIf_stmt(Python3Parser::If_stmtContext *ctx) {
|
||||
for (int i = 0; i < test_list.size(); i++)
|
||||
if (Any2Bool(DeQuate(visitTest(test_list[i]), Variables)))
|
||||
return visitSuite(suite_list[i]);
|
||||
if (test_list.size() - suite_list.size() == 1)
|
||||
if (test_list.size() - suite_list.size() == -1)
|
||||
return visitSuite(suite_list[suite_list.size() - 1]);
|
||||
return nullptr;
|
||||
}
|
||||
|
Reference in New Issue
Block a user