From 2eb0ef0364591ff9ad30fcefa795bfd8eba17dea Mon Sep 17 00:00:00 2001 From: John Hodge Date: Thu, 19 Mar 2015 10:49:11 +0800 Subject: EVIL tagged union hackjob --- src/ast/pattern.hpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/ast') diff --git a/src/ast/pattern.hpp b/src/ast/pattern.hpp index a2f9a24b..a9a944fb 100644 --- a/src/ast/pattern.hpp +++ b/src/ast/pattern.hpp @@ -33,6 +33,16 @@ private: unique_ptr m_node; unique_ptr m_node2; // ONLY used for range values ::std::vector m_sub_patterns; + + TAGGED_ENUM(Data, Any, + (Any, () ), + (Ref, (bool mut; unique_ptr sub;) ), + (Value, (unique_ptr start; unique_ptr end;) ), + (Tuple, (::std::vector sub_patterns;) ), + (StructTuple, (Path path; ::std::vector sub_patterns;) ), + (Struct, (Path path; ::std::vector< ::std::pair< ::std::string,Pattern> > sub_patterns;) ) + ); + public: Pattern(Pattern&& o) noexcept: m_class(o.m_class), -- cgit v1.2.3