From 9be17d01a2816c7aa5c1fc7de4832ddbd2976975 Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Fri, 15 Nov 2019 18:03:09 +0100
Subject: [PATCH] Add simple CompoundDataVariant type

---
 .../ASTNodeAffectationExpressionBuilder.cpp     |  4 ++++
 src/language/ASTNodeDataVariant.hpp             | 17 ++++++++++++++++-
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/src/language/ASTNodeAffectationExpressionBuilder.cpp b/src/language/ASTNodeAffectationExpressionBuilder.cpp
index c515da24d..23fe98211 100644
--- a/src/language/ASTNodeAffectationExpressionBuilder.cpp
+++ b/src/language/ASTNodeAffectationExpressionBuilder.cpp
@@ -92,6 +92,10 @@ ASTNodeAffectationExpressionBuilder::ASTNodeAffectationExpressionBuilder(ASTNode
         set_affectation_processor_for_string_data(data_type);
         break;
       }
+      case ASTNodeDataType::typename_t: {
+        throw parse_error("unexpected error: compound type affectation NIY", std::vector{n.begin()});
+        break;
+      }
       default: {
         throw parse_error("unexpected error: undefined value type for affectation", std::vector{n.begin()});
       }
diff --git a/src/language/ASTNodeDataVariant.hpp b/src/language/ASTNodeDataVariant.hpp
index 6a3821729..8f350c734 100644
--- a/src/language/ASTNodeDataVariant.hpp
+++ b/src/language/ASTNodeDataVariant.hpp
@@ -1,8 +1,23 @@
 #ifndef AST_NODE_DATA_VARIANT_HPP
 #define AST_NODE_DATA_VARIANT_HPP
 
+#include <memory>
 #include <variant>
 
-using ASTNodeDataVariant = std::variant<std::monostate, bool, uint64_t, int64_t, double, std::string>;
+struct CompoundDataVariant;
+
+using ASTNodeDataVariant =
+  std::variant<std::monostate, bool, uint64_t, int64_t, double, std::string, CompoundDataVariant>;
+
+struct CompoundDataVariant
+{
+  std::vector<ASTNodeDataVariant> m_data_vector;
+  friend std::ostream&
+  operator<<(std::ostream& os, const CompoundDataVariant&)
+  {
+    os << " *CompoundDataVariant* ";
+    return os;
+  }
+};
 
 #endif   // AST_NODE_DATA_VARIANT_HPP
-- 
GitLab