Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Negative coverage: borrow_check_expr / place / premise prove_place_is_movable(env, assumptions, state, place) => state

Premise at line 466. Observed failure causes: failed_judgment.

place
LineCoverageSource
4622(borrow_check_place_expr(env, assumptions, state, place) => (place, state))
463(access_kind_for_place_use(env, assumptions, state, place) => (access_kind, state))
46411(access_permitted(env, assumptions, state, Access::new(access_kind, place), places_live_on_exit) => state)
465N/A(let state = if matches!(access_kind, AccessKind::Move) { state.with_uninit(&place.to_place_expression()) } else { state.clone() })
4662(prove_place_is_movable(env, assumptions, state, place) => state)
──────── ("place")
46856(borrow_check_expr(env, assumptions, state, Expr::Place(place), places_live_on_exit) => (&place.ty, state))

2 tests failed proving this premise:


Source location: tests/borrowck.rs:453

fn foo() -> Datum {
    exists<'r0, 'r1> {
        let x: Datum = Datum { value: 0 _ u32 };
        let r: &'r0 Datum = &'r1 x;
        let y: Datum = *r;
        return y;
    }
}
Failed proof tree
… (200 of 1236 nodes shown)

Source location: tests/borrowck.rs:1112

fn foo() -> Datum {
    exists<'r0, 'r1> {
        let x: Datum = Datum { value: 0 _ u32 };
        let r: &mut 'r0 Datum = &mut 'r1 x;
        let y: Datum = *r;
        return y;
    }
}
Failed proof tree
… (200 of 1236 nodes shown)