diff options
Diffstat (limited to 'src/hir')
-rw-r--r-- | src/hir/from_ast.cpp | 8 | ||||
-rw-r--r-- | src/hir/from_ast_expr.cpp | 2 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/hir/from_ast.cpp b/src/hir/from_ast.cpp index 359d6ed9..930c549f 100644 --- a/src/hir/from_ast.cpp +++ b/src/hir/from_ast.cpp @@ -200,6 +200,7 @@ BUG(pat.span(), "Encountered StructTuple pattern not pointing to a enum variant or a struct - " << e.path); ), (EnumVar, + assert( pb.enum_ ); const auto& var = pb.enum_->variants()[pb.idx].m_data; unsigned int field_count = var.as_Tuple().m_sub_types.size(); ::std::vector<HIR::Pattern> sub_patterns; @@ -239,6 +240,7 @@ }; ), (Struct, + assert( pb.struct_ ); unsigned int field_count = pb.struct_->m_data.as_Tuple().ents.size(); ::std::vector<HIR::Pattern> sub_patterns; @@ -674,7 +676,11 @@ ::HIR::TypeRef::Data::Data_TraitObject v; for(const auto& t : e.traits) { - if( t.binding().as_Trait().trait_->is_marker() ) { + const auto& tb = t.binding().as_Trait(); + if( tb.trait_ && tb.trait_->is_marker() ) { + v.m_markers.push_back( LowerHIR_GenericPath(ty.span(), t) ); + } + else if( tb.hir && tb.hir->m_is_marker ) { v.m_markers.push_back( LowerHIR_GenericPath(ty.span(), t) ); } else { diff --git a/src/hir/from_ast_expr.cpp b/src/hir/from_ast_expr.cpp index f8d3fd69..a2d0be99 100644 --- a/src/hir/from_ast_expr.cpp +++ b/src/hir/from_ast_expr.cpp @@ -188,7 +188,7 @@ struct LowerHIR_ExprNode_Visitor: switch(v.m_type) { case ::AST::ExprNode_UniOp::BOX: - TODO(v.get_pos(), "Desugar box"); + BUG(v.get_pos(), "Encounterd box operator (should have been expanded in AST)"); break; case ::AST::ExprNode_UniOp::QMARK: BUG(v.get_pos(), "Encounterd question mark operator (should have been expanded in AST)"); |