diff options
author | John Hodge <tpg@ucc.asn.au> | 2017-11-01 20:46:36 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2017-11-01 20:46:36 +0800 |
commit | cb271f8ea98d1a5c65a5e636a0e73a85710027b4 (patch) | |
tree | 9694427c074c0e0d581cde6e01b6167016e0f844 /src/hir_expand/reborrow.cpp | |
parent | 8306f43ccdf0414b48891aa5eb04d8901899c052 (diff) | |
download | mrust-cb271f8ea98d1a5c65a5e636a0e73a85710027b4.tar.gz |
HIR - Refactor enums to only embed a single field (and give variants types)
Diffstat (limited to 'src/hir_expand/reborrow.cpp')
-rw-r--r-- | src/hir_expand/reborrow.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/hir_expand/reborrow.cpp b/src/hir_expand/reborrow.cpp index d1b08f54..d276f57d 100644 --- a/src/hir_expand/reborrow.cpp +++ b/src/hir_expand/reborrow.cpp @@ -209,14 +209,18 @@ namespace { } } void visit_enum(::HIR::ItemPath p, ::HIR::Enum& item) override { - for(auto& var : item.m_variants) + if(auto* e = item.m_data.opt_Value()) { - TU_IFLET(::HIR::Enum::Variant, var.second, Value, e, - DEBUG("Enum value " << p << " - " << var.first); + for(auto& var : e->variants) + { + DEBUG("Enum value " << p << " - " << var.name); - ExprVisitor_Mutate ev(m_crate); - ev.visit_node_ptr(e.expr); - ) + if( var.expr ) + { + ExprVisitor_Mutate ev(m_crate); + ev.visit_node_ptr(var.expr); + } + } } } }; |