From 60c094b8d7bbae5786e90407fe5be8063e8bcea3 Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Wed, 7 Oct 2020 16:55:26 +0200
Subject: [PATCH] Fix symbol clean-up

Replace old values (when leaving a block) by default (constructor)
values. This was buggy since old values were replaced by a
`std::monostate` which led to inconsistent state of local variables.
---
 src/language/utils/SymbolTable.hpp | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/language/utils/SymbolTable.hpp b/src/language/utils/SymbolTable.hpp
index 6bcf26778..39d414b1e 100644
--- a/src/language/utils/SymbolTable.hpp
+++ b/src/language/utils/SymbolTable.hpp
@@ -267,7 +267,12 @@ class SymbolTable
   clearValues()
   {
     for (auto& symbol : m_symbol_list) {
-      symbol.attributes().value() = DataVariant{};
+      std::visit(
+        [](auto&& value) {
+          using T = std::decay_t<decltype(value)>;
+          value   = T{};
+        },
+        symbol.attributes().value());
     }
   }
 
-- 
GitLab