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());
+      }
     }
   }