From 6ae4d56a03b1950a0f893a06811dc253fa0c925f Mon Sep 17 00:00:00 2001 From: ZhuangYumin Date: Thu, 9 Nov 2023 20:02:52 +0800 Subject: [PATCH] fix: bug of loss dequate --- CMakeLists.txt | 2 +- src/Evalvisitor.cpp | 1 + src/names.cpp | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 42d3f2b..0dcb9c3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.15.2) project(python_interpreter) set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fsanitize=address") include_directories(/usr/include/antlr4-runtime/) include_directories( diff --git a/src/Evalvisitor.cpp b/src/Evalvisitor.cpp index 757b8e8..7d0d3a8 100644 --- a/src/Evalvisitor.cpp +++ b/src/Evalvisitor.cpp @@ -184,6 +184,7 @@ std::any EvalVisitor::visitContinue_stmt( std::any EvalVisitor::visitReturn_stmt(Python3Parser::Return_stmtContext *ctx) { if (!ctx->testlist()) return FlowType(RETURN, std::vector()); std::any val = visitTestlist(ctx->testlist()); + val = DeQuate(val, Variables); std::vector *val_ptr = std::any_cast>(&val); if (val_ptr) return FlowType(RETURN, *val_ptr); std::vector tmp; diff --git a/src/names.cpp b/src/names.cpp index 79747ff..bfdfcbe 100644 --- a/src/names.cpp +++ b/src/names.cpp @@ -15,7 +15,7 @@ std::any VariableContainer::ReadVariable(const std::string &name) { if (top.find(name) != top.end()) return top[name]; } if (GlobalScope.find(name) != GlobalScope.end()) return GlobalScope[name]; - throw InterpretException(("ReadVariable: " + name + " not found").c_str()); + throw InterpretException(("ReadVariable: not found")); } void VariableContainer::WriteVariable(const std::string &name, const std::any &value, bool cover) {