Test foo
Source location: tests/borrowck.rs:3813
fn foo() -> u32 {
exists<'r0, 'r1, 'r2> {
let x: u32 = 22_u32;
let p: &'r1 u32 = &'r0 x;
let q: &'r2 u32 = p;
x = 1_u32;
q;
return 0_u32;
}
}
Rules proved (0)
This test records no positive coverage.
Premises failed (24)
The last column links to the premise’s page when the judgment view counts this failure against that premise. It does not when the premise is read as infallible, or when the failure was blamed inside a multi-line premise that carries no record on its own first line.
| Judgment | Rule | Premise | All tests of this premise |
|---|---|---|---|
| borrow_check | borrow_check | borrow_check_block(env, assumptions, state, bloc… (line 135) | 79 tests |
| borrow_check_block | basic block | for_all(i in 0..stmts.len()) with(env, state) (b… (line 156, blamed at line 157) | not counted by the judgment view |
| borrow_check_statement | expr | borrow_check_expr( env, assumptions, state, expr… (line 232) | 26 tests |
| borrow_check_statement | exists | scope(env.enter_existentially(&with_variables(bi… (line 300, blamed at line 302) | not counted by the judgment view |
| borrow_check_statement | exists | scope(env.enter_existentially(&with_variables(bi… (line 310, blamed at line 312) | not counted by the judgment view |
| borrow_check_statement | exists | scope(env.enter_existentially(&with_variables(bi… (line 324, blamed at line 327) | not counted by the judgment view |
| borrow_check_expr | assign | access_permitted( env, assumptions, state, Acces… (line 416) | 11 tests |
| access_permitted | access_permitted | access_permitted_by_loans(env, assumptions, stat… (line 878) | 24 tests |
| access_permitted_by_loans | access_permitted_by_loans | for_all(loan in &state.current.loans_live) with(… (line 897, blamed at line 898) | not counted by the judgment view |
| access_permitted_by_loan | borrow of disjoint places | if place_disjoint_from_place(&loan.place, &acces… (line 920) | 29 tests |
| access_permitted_by_loan | write-indirect | if let TypedPlaceExpressionData::Deref(place_loa… (line 947) | 24 tests |
| access_permitted_by_loan | loan is dead | loan_not_required_by_live_places(env, assumption… (line 967) | 29 tests |
| loan_not_required_by_live_places | loan_not_required_by_live_places | for_all(live_place in places_live_after_access) … (line 1319, blamed at line 1321) | not counted by the judgment view |
| loan_not_required_by_live_place | loan is not required by type | loan_not_required_by_parameter(env, assumptions,… (line 1348) | 29 tests |
| loan_not_required_by_parameter | rigid-ty | loan_not_required_by_parameters(env, assumptions… (line 1416) | 29 tests |
| loan_not_required_by_parameter | lifetime | loan_cannot_outlive(env, assumptions, outlives, … (line 1506) | 29 tests |
| loan_cannot_outlive | loan_cannot_outlive | if !outlived_by_loan.contains(&lifetime.upcast()… (line 1526) | 29 tests |
| loan_not_required_by_parameters | loan_not_required_by_parameters | for_all(param in live_parameters) (loan_not_requ… (line 1553, blamed at line 1554) | not counted by the judgment view |
| check_free_fn | check free fn | check_fn(program, Env::default(), Predicates::t(… (line 24) | 81 tests |
| check_fn | check fn | scope(enter_universally(env, &f.binder) => (env,… (line 48, blamed at line 54) | not counted by the judgment view |
| check_fn_body | expr fn body | borrow_check(typeck_env, assumptions, initial_st… (line 89) | 79 tests |
| check_all_crates | check all prefixes | for_all(i in 0..crates.len()) (let program = cra… (line 52, blamed at line 54) | not counted by the judgment view |
| check_crate | check crate | for_all(item in &c.items) (check_crate_item(prog… (line 73, blamed at line 74) | not counted by the judgment view |
| check_crate_item | free fn | check_free_fn(program, f, crate_id) => () (line 207) | 81 tests |
Proof trees
Failed proof tree
check_all_crates failedmod.rs:42args
rule "check all prefixes"mod.rs:54check_crate failedmod.rs:61args
rule "check crate"mod.rs:74check_crate_item failedmod.rs:179rule "free fn"mod.rs:207check_free_fn failedfns.rs:14args
rule "check free fn"fns.rs:24check_fn failedfns.rs:31args
rule "check fn"fns.rs:54check_fn_body failedfns.rs:61args
rule "expr fn body"fns.rs:89borrow_check failednll.rs:124args
rule "borrow_check"nll.rs:135borrow_check_block failednll.rs:142rule "basic block"nll.rs:157borrow_check_statement failednll.rs:174args
rule "exists"nll.rs:302borrow_check_block failednll.rs:142args
rule "basic block"nll.rs:157borrow_check_statement failednll.rs:174args
rule "expr"nll.rs:232borrow_check_expr failednll.rs:371args
rule "assign"nll.rs:416access_permitted failednll.rs:862args
rule "access_permitted"nll.rs:878access_permitted_by_loans failednll.rs:885rule "access_permitted_by_loans"nll.rs:898access_permitted_by_loan failednll.rs:905args
rule "borrow of disjoint places"nll.rs:920 (failed: if_false)rule "loan is dead"nll.rs:967loan_not_required_by_live_places failednll.rs:1296args
rule "loan_not_required_by_live_places"nll.rs:1321loan_not_required_by_live_place failednll.rs:1328args
rule "loan is not required by type"nll.rs:1348loan_not_required_by_parameter failednll.rs:1396args
rule "rigid-ty"nll.rs:1416loan_not_required_by_parameters failednll.rs:1533args
rule "loan_not_required_by_parameters"nll.rs:1554loan_not_required_by_parameter failednll.rs:1396args
rule "lifetime"nll.rs:1506loan_cannot_outlive failednll.rs:1513args
rule "loan_cannot_outlive"nll.rs:1526 (failed: if_false)
rule "write-indirect"nll.rs:947 (failed: if_let)
rule "basic block"nll.rs:157borrow_check_statement failednll.rs:174args
rule "expr"nll.rs:232borrow_check_expr failednll.rs:371args
rule "assign"nll.rs:416access_permitted failednll.rs:862args
rule "access_permitted"nll.rs:878access_permitted_by_loans failednll.rs:885rule "access_permitted_by_loans"nll.rs:898access_permitted_by_loan failednll.rs:905args
rule "borrow of disjoint places"nll.rs:920 (failed: if_false)rule "loan is dead"nll.rs:967loan_not_required_by_live_places failednll.rs:1296args
rule "loan_not_required_by_live_places"nll.rs:1321loan_not_required_by_live_place failednll.rs:1328args
rule "loan is not required by type"nll.rs:1348loan_not_required_by_parameter failednll.rs:1396args
rule "rigid-ty"nll.rs:1416loan_not_required_by_parameters failednll.rs:1533args
rule "loan_not_required_by_parameters"nll.rs:1554loan_not_required_by_parameter failednll.rs:1396args
rule "lifetime"nll.rs:1506loan_cannot_outlive failednll.rs:1513args
rule "loan_cannot_outlive"nll.rs:1526 (failed: if_false)
rule "write-indirect"nll.rs:947 (failed: if_let)