summaryrefslogtreecommitdiff
path: root/src/trans/codegen_c.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-12-04 19:48:45 +0800
committerJohn Hodge <tpg@mutabah.net>2016-12-04 19:48:45 +0800
commit1cb526a077bfef3aba508927250e3213186cf496 (patch)
tree87b6bf8627b90a63c18ceee653bfbdc702d051ea /src/trans/codegen_c.cpp
parentf2b6b58c75e31398438e10ea6cd6d7a00268f8a7 (diff)
downloadmrust-1cb526a077bfef3aba508927250e3213186cf496.tar.gz
Trans C - Set union tag
Diffstat (limited to 'src/trans/codegen_c.cpp')
-rw-r--r--src/trans/codegen_c.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp
index 15f80a65..d7199b98 100644
--- a/src/trans/codegen_c.cpp
+++ b/src/trans/codegen_c.cpp
@@ -529,6 +529,13 @@ namespace {
TODO(sp, "Handle constructing variants");
),
(Struct,
+ if(ve.variant_idx != ~0u) {
+ emit_lvalue(e.dst);
+ m_of << ".TAG = " << ve.variant_idx;
+ if(ve.vals.size() > 0)
+ m_of << ";\n\t";
+ }
+
for(unsigned int j = 0; j < ve.vals.size(); j ++) {
if( j != 0 ) m_of << ";\n\t";
emit_lvalue(e.dst);