summaryrefslogtreecommitdiff
path: root/src/hir/expr.hpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-11-19 22:46:14 +0800
committerJohn Hodge <tpg@mutabah.net>2016-11-19 22:46:14 +0800
commitcf499efccf021db06630b76224bcb68dcf923975 (patch)
treef64e891cb31ed6f886a83b110b94fed718cb9011 /src/hir/expr.hpp
parent5fe7fcc580db497b267ca0f820e5d3268fe8aafb (diff)
downloadmrust-cf499efccf021db06630b76224bcb68dcf923975.tar.gz
HIR - Union handling
Diffstat (limited to 'src/hir/expr.hpp')
-rw-r--r--src/hir/expr.hpp21
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);