Skip to content
Snippets Groups Projects
Commit 7aab4b0a authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Clear symbol tables when `exit` is explicitly called in scripts

parent 5c5c509c
Branches
No related tags found
No related merge requests found
...@@ -39,6 +39,15 @@ ...@@ -39,6 +39,15 @@
#include <unordered_map> #include <unordered_map>
#include <variant> #include <variant>
void
clear_symbol_tables(std::unique_ptr<ASTNode>& node)
{
for (auto& child : node->children) {
clear_symbol_tables(child);
}
node->m_symbol_table->clearValues();
}
void void
parser(const std::string& filename) parser(const std::string& filename)
{ {
...@@ -96,6 +105,7 @@ parser(const std::string& filename) ...@@ -96,6 +105,7 @@ parser(const std::string& filename)
} }
catch (language::Exit& e) { catch (language::Exit& e) {
ExecutionStatManager::getInstance().setExitCode(e.code()); ExecutionStatManager::getInstance().setExitCode(e.code());
clear_symbol_tables(root_node);
} }
root_node->m_symbol_table->clearValues(); root_node->m_symbol_table->clearValues();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment