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