diff --git a/src/language/utils/SymbolTable.hpp b/src/language/utils/SymbolTable.hpp index 6aa089bd8de7aa5a3a6a6cf2a8115e77de25dbe8..772ac6564859dd402ba2086d4fed7dc0b4c64059 100644 --- a/src/language/utils/SymbolTable.hpp +++ b/src/language/utils/SymbolTable.hpp @@ -267,12 +267,15 @@ class SymbolTable clearValues() { for (auto& symbol : m_symbol_list) { - std::visit( - [](auto&& value) { - using T = std::decay_t<decltype(value)>; - value = T{}; - }, - symbol.attributes().value()); + // local functions must kept their values (id) + if (symbol.attributes().dataType() != ASTNodeDataType::function_t) { + std::visit( + [](auto&& value) { + using T = std::decay_t<decltype(value)>; + value = T{}; + }, + symbol.attributes().value()); + } } }