summaryrefslogtreecommitdiff
path: root/src/hir
diff options
context:
space:
mode:
Diffstat (limited to 'src/hir')
-rw-r--r--src/hir/from_ast.cpp8
-rw-r--r--src/hir/from_ast_expr.cpp2
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)");