From 29eaf69558bc466d90ebe320ba43e681d7e0d68c Mon Sep 17 00:00:00 2001 From: ZhuangYumin Date: Thu, 9 Nov 2023 20:46:54 +0800 Subject: [PATCH] fix: bug in If_stmt --- src/Evalvisitor.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Evalvisitor.cpp b/src/Evalvisitor.cpp index 7d0d3a8..92ee2ae 100644 --- a/src/Evalvisitor.cpp +++ b/src/Evalvisitor.cpp @@ -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; }