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 / ref / premise access_permitted( env, assumptions, state, Access::new(access_kind, place), places_live_on_exit, ) => state

Premise at line 446. Observed failure causes: failed_judgment.

ref
LineCoverageSource
434(borrow_check_place_expr(
env,
assumptions,
state,
place,
) => (place, state))
442N/A(let access_kind = match kind {
RefKind::Shared => AccessKind::Read,
RefKind::Mut => AccessKind::Write,
})
4461(access_permitted(
env,
assumptions,
state,
Access::new(access_kind, place),
places_live_on_exit,
) => state)
455N/A(let state = state.with_loan(Loan::new(lt, place, kind)))
456N/A(let ty = place.ty.ref_ty_of_kind(kind, lt))
──────── ("ref")
45817(borrow_check_expr(env, assumptions, state, Expr::Ref { kind, lt, place }, places_live_on_exit) => (ty, state))

1 test failed proving this premise:


Source location: tests/borrowck.rs:2944

fn bar() -> u32 {
    exists<'r0, 'r1, 'r2> {
        let v: u32 = 0 _ u32;
        let p: &'r0 u32 = &'r1 v;
        let _: u32 = foo::<'r2>(&mut 'r2 v);
        return *p;
    }
}
Failed proof tree