From fc7239e7271e879102272ea4d7e98f87f027ee84 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Mon, 31 Oct 2016 10:01:41 +0800 Subject: All - Rough support for `union` (data structure present in all stages) --- src/ast/ast.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/ast/ast.cpp') diff --git a/src/ast/ast.cpp b/src/ast/ast.cpp index 420ac250..6e93a0d9 100644 --- a/src/ast/ast.cpp +++ b/src/ast/ast.cpp @@ -191,6 +191,14 @@ Struct Struct::clone() const throw ""; } +Union Union::clone() const +{ + decltype(m_variants) new_vars; + for(const auto& f : m_variants) + new_vars.push_back( f.clone() ); + return Union(m_params.clone(), mv$(new_vars)); +} + ::std::ostream& operator<<(::std::ostream& os, const ImplDef& impl) { return os << "impl<" << impl.m_params << "> " << impl.m_trait.ent << " for " << impl.m_type << ""; @@ -343,6 +351,9 @@ Item Item::clone() const (Enum, return AST::Item(e.clone()); ), + (Union, + return AST::Item(e.clone()); + ), (Trait, return AST::Item(e.clone()); ), -- cgit v1.2.3