From 17b13384d44bb3b3e5ff8845c0ccf49f2751d0db Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sun, 23 Oct 2016 14:12:08 +0800 Subject: MIR Gen Match - Fix a missing field access, and a bad type in slice matches --- src/mir/from_hir_match.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/mir/from_hir_match.cpp b/src/mir/from_hir_match.cpp index 2c10e14b..0edc6800 100644 --- a/src/mir/from_hir_match.cpp +++ b/src/mir/from_hir_match.cpp @@ -2750,9 +2750,11 @@ void DecisionTreeGen::get_ty_and_val( (Array, assert(idx < e.size_val); cur_ty = &*e.inner; + lval = ::MIR::LValue::make_Field({ box$(lval), idx }); ), (Slice, cur_ty = &*e.inner; + lval = ::MIR::LValue::make_Field({ box$(lval), idx }); ), (Borrow, ASSERT_BUG(sp, idx == FIELD_DEREF, "Destructure of borrow doesn't correspond to a deref in the path"); @@ -3317,12 +3319,12 @@ void DecisionTreeGen::generate_branches_Slice( // - Binary search // - Sequential comparisons - auto val_len = m_builder.lvalue_or_temp(sp, ty, ::MIR::RValue::make_DstMeta({ val.clone() })); + auto val_len = m_builder.lvalue_or_temp(sp, ::HIR::CoreType::Usize, ::MIR::RValue::make_DstMeta({ val.clone() })); // TODO: Binary search instead. for( const auto& branch : branches.fixed_arms ) { - auto val_des = m_builder.lvalue_or_temp(sp, ty, ::MIR::Constant(static_cast(branch.first))); + auto val_des = m_builder.lvalue_or_temp(sp, ::HIR::CoreType::Usize, ::MIR::Constant(static_cast(branch.first))); // Special case - final just does equality if( &branch == &branches.fixed_arms.back() ) -- cgit v1.2.3