Negative coverage: access_permitted / access_permitted / premise if match access.kind { AccessKind::Write => check_place_writable(&state, &access.place.to_place_expression()), AccessKind::Read \| AccessKind::Move => check_place_initialized(&state, &access.place.to_place_expression()), }
Premise at line 809. Observed failure causes: if_false.
access_permitted| Line | Coverage | Source |
|---|---|---|
| 809 | 10 | (if match access.kind { AccessKind::Write => check_place_writable(&state, &access.place.to_place_expression()), AccessKind::Read | AccessKind::Move => check_place_initialized(&state, &access.place.to_place_expression()), }) |
| 813 | 20 | (access_permitted_by_loans(env, assumptions, state, access, places_live_after_access) => state) |
| ──────── ("access_permitted") | ||
| 815 | 90 | (access_permitted(env, assumptions, state, access, places_live_after_access) => state) |
10 tests failed proving this premise:
Source location: tests/borrowck.rs:44
fn foo() -> u32 {
let x: u32;
return x;
}
Failed proof tree
check_all_crates failedmod.rs:41args
rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60args
rule "check crate"mod.rs:73check_crate_item failedmod.rs:178rule "free fn"mod.rs:206check_free_fn failedfns.rs:14args
rule "check free fn"fns.rs:24check_fn failedfns.rs:31args
rule "check fn"fns.rs:55check_fn_body failedfns.rs:62args
rule "expr fn body"fns.rs:90borrow_check failednll.rs:127args
rule "borrow_check"nll.rs:138borrow_check_block failednll.rs:145rule "basic block"nll.rs:160borrow_check_statement failednll.rs:177args
rule "return"nll.rs:280borrow_check_expr failednll.rs:372args
rule "place"nll.rs:504access_permitted failednll.rs:797args
rule "access_permitted"nll.rs:809 (failed: if_false)
rule "place"nll.rs:504access_permitted failednll.rs:797args
rule "access_permitted"nll.rs:809 (failed: if_false)
Source location: tests/borrowck.rs:89
fn foo() -> Datum {
let x: Datum = Datum { value: 0_u32 };
let y: Datum = x;
let z: Datum = x;
return z;
}
Failed proof tree
check_all_crates failedmod.rs:41args
rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60args
rule "check crate"mod.rs:73check_crate_item failedmod.rs:178rule "free fn"mod.rs:206check_free_fn failedfns.rs:14args
rule "check free fn"fns.rs:24check_fn failedfns.rs:31args
rule "check fn"fns.rs:55check_fn_body failedfns.rs:62args
rule "expr fn body"fns.rs:90borrow_check failednll.rs:127args
rule "borrow_check"nll.rs:138borrow_check_block failednll.rs:145rule "basic block"nll.rs:160borrow_check_statement failednll.rs:177args
rule "let"nll.rs:194borrow_check_expr_has_ty failednll.rs:351args
rule "block"nll.rs:364borrow_check_expr failednll.rs:372args
rule "place"nll.rs:504access_permitted failednll.rs:797args
rule "access_permitted"nll.rs:809 (failed: if_false)
Source location: tests/borrowck.rs:154
fn foo() -> u32 {
let x: u32;
if true {
x = 1_u32;
} else {
}
return x;
}
Failed proof tree
check_all_crates failedmod.rs:41args
rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60args
rule "check crate"mod.rs:73check_crate_item failedmod.rs:178rule "free fn"mod.rs:206check_free_fn failedfns.rs:14args
rule "check free fn"fns.rs:24check_fn failedfns.rs:31args
rule "check fn"fns.rs:55check_fn_body failedfns.rs:62args
rule "expr fn body"fns.rs:90borrow_check failednll.rs:127args
rule "borrow_check"nll.rs:138borrow_check_block failednll.rs:145rule "basic block"nll.rs:160borrow_check_statement failednll.rs:177args
rule "return"nll.rs:280borrow_check_expr failednll.rs:372args
rule "place"nll.rs:504access_permitted failednll.rs:797args
rule "access_permitted"nll.rs:809 (failed: if_false)
rule "place"nll.rs:504access_permitted failednll.rs:797args
rule "access_permitted"nll.rs:809 (failed: if_false)
Source location: tests/borrowck.rs:227
fn foo() -> u32 {
let x: Pair;
x.first = 1_u32;
return 0_u32;
}
Failed proof tree
check_all_crates failedmod.rs:41args
rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60args
rule "check crate"mod.rs:73check_crate_item failedmod.rs:178rule "free fn"mod.rs:206check_free_fn failedfns.rs:14args
rule "check free fn"fns.rs:24check_fn failedfns.rs:31args
rule "check fn"fns.rs:55check_fn_body failedfns.rs:62args
rule "expr fn body"fns.rs:90borrow_check failednll.rs:127args
rule "borrow_check"nll.rs:138borrow_check_block failednll.rs:145rule "basic block"nll.rs:160borrow_check_statement failednll.rs:177args
rule "expr"nll.rs:230borrow_check_expr failednll.rs:372args
rule "assign"nll.rs:404access_permitted failednll.rs:797args
rule "access_permitted"nll.rs:809 (failed: if_false)
Source location: tests/borrowck.rs:304
fn foo() -> u32 {
let x: Pair = Pair { first: Datum { value: 1_u32 }, second: Datum { value: 2_u32 } };
let a: Datum = x.first;
let b: Pair = x;
return 0_u32;
}
Failed proof tree
check_all_crates failedmod.rs:41args
rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60args
rule "check crate"mod.rs:73check_crate_item failedmod.rs:178rule "free fn"mod.rs:206check_free_fn failedfns.rs:14args
rule "check free fn"fns.rs:24check_fn failedfns.rs:31args
rule "check fn"fns.rs:55check_fn_body failedfns.rs:62args
rule "expr fn body"fns.rs:90borrow_check failednll.rs:127args
rule "borrow_check"nll.rs:138borrow_check_block failednll.rs:145rule "basic block"nll.rs:160borrow_check_statement failednll.rs:177args
rule "let"nll.rs:194borrow_check_expr_has_ty failednll.rs:351args
rule "block"nll.rs:364borrow_check_expr failednll.rs:372args
rule "place"nll.rs:504access_permitted failednll.rs:797args
rule "access_permitted"nll.rs:809 (failed: if_false)
Source location: tests/borrowck.rs:346
fn foo() -> Datum {
let x: Pair = Pair { first: Datum { value: 1_u32 }, second: Datum { value: 2_u32 } };
let a: Datum = x.first;
let b: Datum = x.first;
return b;
}
Failed proof tree
check_all_crates failedmod.rs:41args
rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60args
rule "check crate"mod.rs:73check_crate_item failedmod.rs:178rule "free fn"mod.rs:206check_free_fn failedfns.rs:14args
rule "check free fn"fns.rs:24check_fn failedfns.rs:31args
rule "check fn"fns.rs:55check_fn_body failedfns.rs:62args
rule "expr fn body"fns.rs:90borrow_check failednll.rs:127args
rule "borrow_check"nll.rs:138borrow_check_block failednll.rs:145rule "basic block"nll.rs:160borrow_check_statement failednll.rs:177args
rule "let"nll.rs:194borrow_check_expr_has_ty failednll.rs:351args
rule "block"nll.rs:364borrow_check_expr failednll.rs:372args
rule "place"nll.rs:504access_permitted failednll.rs:797args
rule "access_permitted"nll.rs:809 (failed: if_false)
Source location: tests/borrowck.rs:388
fn foo() -> Datum {
let x: Pair = Pair { first: Datum { value: 1_u32 }, second: Datum { value: 2_u32 } };
let a: Pair = x;
let b: Datum = x.first;
return b;
}
Failed proof tree
check_all_crates failedmod.rs:41args
rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60args
rule "check crate"mod.rs:73check_crate_item failedmod.rs:178rule "free fn"mod.rs:206check_free_fn failedfns.rs:14args
rule "check free fn"fns.rs:24check_fn failedfns.rs:31args
rule "check fn"fns.rs:55check_fn_body failedfns.rs:62args
rule "expr fn body"fns.rs:90borrow_check failednll.rs:127args
rule "borrow_check"nll.rs:138borrow_check_block failednll.rs:145rule "basic block"nll.rs:160borrow_check_statement failednll.rs:177args
rule "let"nll.rs:194borrow_check_expr_has_ty failednll.rs:351args
rule "block"nll.rs:364borrow_check_expr failednll.rs:372args
rule "place"nll.rs:504access_permitted failednll.rs:797args
rule "access_permitted"nll.rs:809 (failed: if_false)
Source location: tests/borrowck.rs:427
fn foo() -> u32 {
let x: Outer = Outer { foo: Inner { bar: 1_u32 } };
let a: Inner = x.foo;
let b: u32 = x.foo.bar;
return b;
}
Failed proof tree
check_all_crates failedmod.rs:41args
rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60args
rule "check crate"mod.rs:73check_crate_item failedmod.rs:178rule "free fn"mod.rs:206check_free_fn failedfns.rs:14args
rule "check free fn"fns.rs:24check_fn failedfns.rs:31args
rule "check fn"fns.rs:55check_fn_body failedfns.rs:62args
rule "expr fn body"fns.rs:90borrow_check failednll.rs:127args
rule "borrow_check"nll.rs:138borrow_check_block failednll.rs:145rule "basic block"nll.rs:160borrow_check_statement failednll.rs:177args
rule "let"nll.rs:194borrow_check_expr_has_ty failednll.rs:351args
rule "block"nll.rs:364borrow_check_expr failednll.rs:372args
rule "place"nll.rs:504access_permitted failednll.rs:797args
rule "access_permitted"nll.rs:809 (failed: if_false)
rule "place"nll.rs:504access_permitted failednll.rs:797args
rule "access_permitted"nll.rs:809 (failed: if_false)
Source location: tests/borrowck.rs:1858
fn foo() -> u32 {
let x: u32;
return x;
}
Failed proof tree
check_all_crates failedmod.rs:41args
rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60args
rule "check crate"mod.rs:73check_crate_item failedmod.rs:178rule "free fn"mod.rs:206check_free_fn failedfns.rs:14args
rule "check free fn"fns.rs:24check_fn failedfns.rs:31args
rule "check fn"fns.rs:55check_fn_body failedfns.rs:62args
rule "expr fn body"fns.rs:90borrow_check failednll.rs:127args
rule "borrow_check"nll.rs:138borrow_check_block failednll.rs:145rule "basic block"nll.rs:160borrow_check_statement failednll.rs:177args
rule "return"nll.rs:280borrow_check_expr failednll.rs:372args
rule "place"nll.rs:504access_permitted failednll.rs:797args
rule "access_permitted"nll.rs:809 (failed: if_false)
rule "place"nll.rs:504access_permitted failednll.rs:797args
rule "access_permitted"nll.rs:809 (failed: if_false)
Source location: tests/borrowck.rs:2541
fn foo() -> i32 {
exists<'r0, 'r1> {
let x: i32 = 0_i32;
let r: &'r0 i32;
'a: loop {
r; // this *may* read from `y` in a previous iteration
let y: i32 = 0_i32;
r = &'r1 y;
continue 'a;
}
}
}
Failed proof tree
check_all_crates failedmod.rs:41args
rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60args
rule "check crate"mod.rs:73check_crate_item failedmod.rs:178rule "free fn"mod.rs:206check_free_fn failedfns.rs:14args
rule "check free fn"fns.rs:24check_fn failedfns.rs:31args
rule "check fn"fns.rs:55check_fn_body failedfns.rs:62args
rule "expr fn body"fns.rs:90borrow_check failednll.rs:127args
rule "borrow_check"nll.rs:138borrow_check_block failednll.rs:145rule "basic block"nll.rs:160borrow_check_statement failednll.rs:177args
rule "exists"nll.rs:327borrow_check_block failednll.rs:145args
rule "basic block"nll.rs:160borrow_check_statement failednll.rs:177args
rule "loop"nll.rs:247borrow_check_loop failednll.rs:575args
rule "fixed-point"nll.rs:595borrow_check_block failednll.rs:145args
rule "basic block"nll.rs:160borrow_check_statement failednll.rs:177args
rule "expr"nll.rs:230borrow_check_expr failednll.rs:372args
rule "place"nll.rs:504access_permitted failednll.rs:797args
rule "access_permitted"nll.rs:809 (failed: if_false)
rule "place"nll.rs:504access_permitted failednll.rs:797args
rule "access_permitted"nll.rs:809 (failed: if_false)
rule "loop"nll.rs:587borrow_check_block failednll.rs:145args
rule "basic block"nll.rs:160borrow_check_statement failednll.rs:177args
rule "expr"nll.rs:230borrow_check_expr failednll.rs:372args
rule "place"nll.rs:504access_permitted failednll.rs:797args
rule "access_permitted"nll.rs:809 (failed: if_false)
rule "place"nll.rs:504access_permitted failednll.rs:797args
rule "access_permitted"nll.rs:809 (failed: if_false)