summaryrefslogtreecommitdiff
path: root/src/hir/from_ast.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/hir/from_ast.cpp')
-rw-r--r--src/hir/from_ast.cpp28
1 files changed, 15 insertions, 13 deletions
diff --git a/src/hir/from_ast.cpp b/src/hir/from_ast.cpp
index 1abd7771..b8445020 100644
--- a/src/hir/from_ast.cpp
+++ b/src/hir/from_ast.cpp
@@ -827,22 +827,24 @@ namespace {
{
TU_MATCH(::AST::EnumVariantData, (var.m_data), (e),
(Value,
- variants.push_back( ::std::make_pair(var.m_name, ::HIR::Enum::Variant::make_Value({
- LowerHIR_Expr(e.m_value),
- ::HIR::Literal {}
- }) ) );
- ),
- (Tuple,
- if( e.m_sub_types.size() == 0 ) {
- variants.push_back( ::std::make_pair(var.m_name, ::HIR::Enum::Variant::make_Unit({})) );
+ if( e.m_value.is_valid() )
+ {
+ variants.push_back( ::std::make_pair(var.m_name, ::HIR::Enum::Variant::make_Value({
+ LowerHIR_Expr(e.m_value),
+ ::HIR::Literal {}
+ }) ) );
}
- else {
- ::HIR::Enum::Variant::Data_Tuple types;
- for(const auto& st : e.m_sub_types)
- types.push_back( new_visent(true, LowerHIR_Type(st)) );
- variants.push_back( ::std::make_pair(var.m_name, ::HIR::Enum::Variant::make_Tuple(mv$(types))) );
+ else
+ {
+ variants.push_back( ::std::make_pair(var.m_name, ::HIR::Enum::Variant::make_Unit({})) );
}
),
+ (Tuple,
+ ::HIR::Enum::Variant::Data_Tuple types;
+ for(const auto& st : e.m_sub_types)
+ types.push_back( new_visent(true, LowerHIR_Type(st)) );
+ variants.push_back( ::std::make_pair(var.m_name, ::HIR::Enum::Variant::make_Tuple(mv$(types))) );
+ ),
(Struct,
::HIR::Enum::Variant::Data_Struct ents;
for( const auto& ent : e.m_fields )