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