From 1cb526a077bfef3aba508927250e3213186cf496 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sun, 4 Dec 2016 19:48:45 +0800 Subject: Trans C - Set union tag --- src/trans/codegen_c.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src') 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); -- cgit v1.2.3