diff options
author | John Hodge <tpg@mutabah.net> | 2016-11-19 22:46:14 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-11-19 22:46:14 +0800 |
commit | cf499efccf021db06630b76224bcb68dcf923975 (patch) | |
tree | f64e891cb31ed6f886a83b110b94fed718cb9011 /src/hir/expr.hpp | |
parent | 5fe7fcc580db497b267ca0f820e5d3268fe8aafb (diff) | |
download | mrust-cf499efccf021db06630b76224bcb68dcf923975.tar.gz |
HIR - Union handling
Diffstat (limited to 'src/hir/expr.hpp')
-rw-r--r-- | src/hir/expr.hpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/hir/expr.hpp b/src/hir/expr.hpp index cd4a21ab..a5a1346a 100644 --- a/src/hir/expr.hpp +++ b/src/hir/expr.hpp @@ -690,6 +690,25 @@ struct ExprNode_StructLiteral: NODE_METHODS(); }; +struct ExprNode_UnionLiteral: + public ExprNode +{ + ::HIR::GenericPath m_path; + ::std::string m_variant_name; + ::HIR::ExprNodeP m_value; + + unsigned int m_variant_index = ~0; + + ExprNode_UnionLiteral(Span sp, ::HIR::GenericPath path, ::std::string name, ::HIR::ExprNodeP value): + ExprNode( mv$(sp) ), + m_path( mv$(path) ), + m_variant_name( mv$(name) ), + m_value( mv$(value) ) + { + } + + NODE_METHODS(); +}; struct ExprNode_Tuple: public ExprNode { @@ -803,6 +822,7 @@ public: NV(ExprNode_Variable); NV(ExprNode_StructLiteral); + NV(ExprNode_UnionLiteral); NV(ExprNode_Tuple); NV(ExprNode_ArrayList); NV(ExprNode_ArraySized); @@ -847,6 +867,7 @@ public: NV(ExprNode_Variable); NV(ExprNode_StructLiteral); + NV(ExprNode_UnionLiteral); NV(ExprNode_Tuple); NV(ExprNode_ArrayList); NV(ExprNode_ArraySized); |