summaryrefslogtreecommitdiff
path: root/src/hir_expand/reborrow.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@ucc.asn.au>2017-11-01 20:46:36 +0800
committerJohn Hodge <tpg@ucc.asn.au>2017-11-01 20:46:36 +0800
commitcb271f8ea98d1a5c65a5e636a0e73a85710027b4 (patch)
tree9694427c074c0e0d581cde6e01b6167016e0f844 /src/hir_expand/reborrow.cpp
parent8306f43ccdf0414b48891aa5eb04d8901899c052 (diff)
downloadmrust-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.cpp16
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);
+ }
+ }
}
}
};