summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mir/cleanup.cpp2
-rw-r--r--src/mir/helpers.cpp4
-rw-r--r--src/trans/codegen_c.cpp3
3 files changed, 6 insertions, 3 deletions
diff --git a/src/mir/cleanup.cpp b/src/mir/cleanup.cpp
index a0d9e0fb..fb22a5dc 100644
--- a/src/mir/cleanup.cpp
+++ b/src/mir/cleanup.cpp
@@ -61,7 +61,7 @@ const ::HIR::Literal* MIR_Cleanup_GetConstant(const Span& sp, const StaticTraitR
unsigned int vtable_idx = it->second.first;
// 2. Load from the vtable
- auto vtable_ty_spath = pe.trait.m_path;
+ auto vtable_ty_spath = te.m_trait.m_path.m_path;
vtable_ty_spath.m_components.back() += "#vtable";
const auto& vtable_ref = state.m_resolve.m_crate.get_struct_by_path(sp, vtable_ty_spath);
// Copy the param set from the trait in the trait object
diff --git a/src/mir/helpers.cpp b/src/mir/helpers.cpp
index e0721549..ba4f4ca1 100644
--- a/src/mir/helpers.cpp
+++ b/src/mir/helpers.cpp
@@ -85,7 +85,7 @@ const ::HIR::TypeRef& ::MIR::TypeResolve::get_lvalue_type(::HIR::TypeRef& tmp, c
MIR_BUG(*this, "Field on unit-like struct - " << ty);
),
(Tuple,
- MIR_ASSERT(*this, e.field_index < se.size(), "Field index out of range in tuple-struct");
+ MIR_ASSERT(*this, e.field_index < se.size(), "Field index out of range in tuple-struct " << te.path);
const auto& fld = se[e.field_index];
if( monomorphise_type_needed(fld.ent) ) {
tmp = monomorphise_type(sp, str.m_params, te.path.m_data.as_Generic().m_params, fld.ent);
@@ -97,7 +97,7 @@ const ::HIR::TypeRef& ::MIR::TypeResolve::get_lvalue_type(::HIR::TypeRef& tmp, c
}
),
(Named,
- MIR_ASSERT(*this, e.field_index < se.size(), "Field index out of range in struct");
+ MIR_ASSERT(*this, e.field_index < se.size(), "Field index out of range in struct " << te.path);
const auto& fld = se[e.field_index].second;
if( monomorphise_type_needed(fld.ent) ) {
tmp = monomorphise_type(sp, str.m_params, te.path.m_data.as_Generic().m_params, fld.ent);
diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp
index 83f8b10b..889565c4 100644
--- a/src/trans/codegen_c.cpp
+++ b/src/trans/codegen_c.cpp
@@ -306,6 +306,7 @@ namespace {
for(const auto& stmt : code->blocks[i].statements)
{
+ mir_res.set_cur_stmt(i, (&stmt - &code->blocks[i].statements.front()));
assert( stmt.is_Drop() || stmt.is_Assign() );
if( stmt.is_Drop() ) {
// TODO: Emit destructor calls
@@ -561,6 +562,8 @@ namespace {
m_of << "\n";
}
}
+
+ mir_res.set_cur_stmt_term(i);
TU_MATCHA( (code->blocks[i].terminator), (e),
(Incomplete,
m_of << "\tfor(;;);\n";