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 702. Observed failure causes: if_false.
access_permitted| Line | Coverage | Source |
|---|---|---|
| 702 | 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()), }) |
| 706 | 10 | (access_permitted_by_loans(env, assumptions, state, access, places_live_after_access) => state) |
| ──────── ("access_permitted") | ||
| 708 | 58 | (access_permitted(env, assumptions, state, access, places_live_after_access) => state) |
10 tests failed proving this premise:
Source location: tests/borrowck.rs:29
fn foo() -> u32 {
let x: u32;
return x;
}
Failed proof tree
check_all_crates failedmod.rs:41rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60rule "check crate"mod.rs:73check_crate_item failedmod.rs:163rule "free fn"mod.rs:191check_free_fn failedfns.rs:14rule "check free fn"fns.rs:24check_fn failedfns.rs:31rule "check fn"fns.rs:55check_fn_body failedfns.rs:62rule "expr fn body"fns.rs:90borrow_check failednll.rs:126rule "borrow_check"nll.rs:137borrow_check_block failednll.rs:144rule "basic block"nll.rs:159borrow_check_statement failednll.rs:176rule "return"nll.rs:279borrow_check_expr failednll.rs:340rule "place"nll.rs:464access_permitted failednll.rs:690rule "access_permitted"nll.rs:702 (failed: if_false)
rule "place"nll.rs:464access_permitted failednll.rs:690rule "access_permitted"nll.rs:702 (failed: if_false)
Source location: tests/borrowck.rs:74
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:41rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60rule "check crate"mod.rs:73check_crate_item failedmod.rs:163rule "free fn"mod.rs:191check_free_fn failedfns.rs:14rule "check free fn"fns.rs:24check_fn failedfns.rs:31rule "check fn"fns.rs:55check_fn_body failedfns.rs:62rule "expr fn body"fns.rs:90borrow_check failednll.rs:126rule "borrow_check"nll.rs:137borrow_check_block failednll.rs:144rule "basic block"nll.rs:159borrow_check_statement failednll.rs:176rule "let"nll.rs:193borrow_check_expr_has_ty failednll.rs:319rule "block"nll.rs:332borrow_check_expr failednll.rs:340rule "place"nll.rs:464access_permitted failednll.rs:690rule "access_permitted"nll.rs:702 (failed: if_false)
Source location: tests/borrowck.rs:139
fn foo() -> u32 {
let x: u32;
if true {
x = 1 _ u32;
} else {
}
return x;
}
Failed proof tree
check_all_crates failedmod.rs:41rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60rule "check crate"mod.rs:73check_crate_item failedmod.rs:163rule "free fn"mod.rs:191check_free_fn failedfns.rs:14rule "check free fn"fns.rs:24check_fn failedfns.rs:31rule "check fn"fns.rs:55check_fn_body failedfns.rs:62rule "expr fn body"fns.rs:90borrow_check failednll.rs:126rule "borrow_check"nll.rs:137borrow_check_block failednll.rs:144rule "basic block"nll.rs:159borrow_check_statement failednll.rs:176rule "return"nll.rs:279borrow_check_expr failednll.rs:340rule "place"nll.rs:464access_permitted failednll.rs:690rule "access_permitted"nll.rs:702 (failed: if_false)
rule "place"nll.rs:464access_permitted failednll.rs:690rule "access_permitted"nll.rs:702 (failed: if_false)
Source location: tests/borrowck.rs:212
fn foo() -> u32 {
let x: Pair;
x.first = 1 _ u32;
return 0 _ u32;
}
Failed proof tree
check_all_crates failedmod.rs:41rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60rule "check crate"mod.rs:73check_crate_item failedmod.rs:163rule "free fn"mod.rs:191check_free_fn failedfns.rs:14rule "check free fn"fns.rs:24check_fn failedfns.rs:31rule "check fn"fns.rs:55check_fn_body failedfns.rs:62rule "expr fn body"fns.rs:90borrow_check failednll.rs:126rule "borrow_check"nll.rs:137borrow_check_block failednll.rs:144rule "basic block"nll.rs:159borrow_check_statement failednll.rs:176rule "expr"nll.rs:229borrow_check_expr failednll.rs:340rule "assign"nll.rs:372access_permitted failednll.rs:690rule "access_permitted"nll.rs:702 (failed: if_false)
Source location: tests/borrowck.rs:286
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:41rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60rule "check crate"mod.rs:73check_crate_item failedmod.rs:163rule "free fn"mod.rs:191check_free_fn failedfns.rs:14rule "check free fn"fns.rs:24check_fn failedfns.rs:31rule "check fn"fns.rs:55check_fn_body failedfns.rs:62rule "expr fn body"fns.rs:90borrow_check failednll.rs:126rule "borrow_check"nll.rs:137borrow_check_block failednll.rs:144rule "basic block"nll.rs:159borrow_check_statement failednll.rs:176rule "let"nll.rs:193borrow_check_expr_has_ty failednll.rs:319rule "block"nll.rs:332borrow_check_expr failednll.rs:340rule "place"nll.rs:464access_permitted failednll.rs:690rule "access_permitted"nll.rs:702 (failed: if_false)
Source location: tests/borrowck.rs:327
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:41rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60rule "check crate"mod.rs:73check_crate_item failedmod.rs:163rule "free fn"mod.rs:191check_free_fn failedfns.rs:14rule "check free fn"fns.rs:24check_fn failedfns.rs:31rule "check fn"fns.rs:55check_fn_body failedfns.rs:62rule "expr fn body"fns.rs:90borrow_check failednll.rs:126rule "borrow_check"nll.rs:137borrow_check_block failednll.rs:144rule "basic block"nll.rs:159borrow_check_statement failednll.rs:176rule "let"nll.rs:193borrow_check_expr_has_ty failednll.rs:319rule "block"nll.rs:332borrow_check_expr failednll.rs:340rule "place"nll.rs:464access_permitted failednll.rs:690rule "access_permitted"nll.rs:702 (failed: if_false)
Source location: tests/borrowck.rs:368
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:41rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60rule "check crate"mod.rs:73check_crate_item failedmod.rs:163rule "free fn"mod.rs:191check_free_fn failedfns.rs:14rule "check free fn"fns.rs:24check_fn failedfns.rs:31rule "check fn"fns.rs:55check_fn_body failedfns.rs:62rule "expr fn body"fns.rs:90borrow_check failednll.rs:126rule "borrow_check"nll.rs:137borrow_check_block failednll.rs:144rule "basic block"nll.rs:159borrow_check_statement failednll.rs:176rule "let"nll.rs:193borrow_check_expr_has_ty failednll.rs:319rule "block"nll.rs:332borrow_check_expr failednll.rs:340rule "place"nll.rs:464access_permitted failednll.rs:690rule "access_permitted"nll.rs:702 (failed: if_false)
Source location: tests/borrowck.rs:407
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:41rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60rule "check crate"mod.rs:73check_crate_item failedmod.rs:163rule "free fn"mod.rs:191check_free_fn failedfns.rs:14rule "check free fn"fns.rs:24check_fn failedfns.rs:31rule "check fn"fns.rs:55check_fn_body failedfns.rs:62rule "expr fn body"fns.rs:90borrow_check failednll.rs:126rule "borrow_check"nll.rs:137borrow_check_block failednll.rs:144rule "basic block"nll.rs:159borrow_check_statement failednll.rs:176rule "let"nll.rs:193borrow_check_expr_has_ty failednll.rs:319rule "block"nll.rs:332borrow_check_expr failednll.rs:340rule "place"nll.rs:464access_permitted failednll.rs:690rule "access_permitted"nll.rs:702 (failed: if_false)
rule "place"nll.rs:464access_permitted failednll.rs:690rule "access_permitted"nll.rs:702 (failed: if_false)
Source location: tests/borrowck.rs:1838
fn foo() -> u32 {
let x: u32;
return x;
}
Failed proof tree
check_all_crates failedmod.rs:41rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60rule "check crate"mod.rs:73check_crate_item failedmod.rs:163rule "free fn"mod.rs:191check_free_fn failedfns.rs:14rule "check free fn"fns.rs:24check_fn failedfns.rs:31rule "check fn"fns.rs:55check_fn_body failedfns.rs:62rule "expr fn body"fns.rs:90borrow_check failednll.rs:126rule "borrow_check"nll.rs:137borrow_check_block failednll.rs:144rule "basic block"nll.rs:159borrow_check_statement failednll.rs:176rule "return"nll.rs:279borrow_check_expr failednll.rs:340rule "place"nll.rs:464access_permitted failednll.rs:690rule "access_permitted"nll.rs:702 (failed: if_false)
rule "place"nll.rs:464access_permitted failednll.rs:690rule "access_permitted"nll.rs:702 (failed: if_false)
Source location: tests/borrowck.rs:2477
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:41rule "check all prefixes"mod.rs:53check_crate failedmod.rs:60rule "check crate"mod.rs:73check_crate_item failedmod.rs:163rule "free fn"mod.rs:191check_free_fn failedfns.rs:14rule "check free fn"fns.rs:24check_fn failedfns.rs:31rule "check fn"fns.rs:55check_fn_body failedfns.rs:62rule "expr fn body"fns.rs:90borrow_check failednll.rs:126rule "borrow_check"nll.rs:137borrow_check_block failednll.rs:144rule "basic block"nll.rs:159borrow_check_statement failednll.rs:176rule "exists"nll.rs:298borrow_check_block failednll.rs:144rule "basic block"nll.rs:159borrow_check_statement failednll.rs:176rule "loop"nll.rs:246borrow_check_loop failednll.rs:535rule "fixed-point"nll.rs:555borrow_check_block failednll.rs:144rule "basic block"nll.rs:159borrow_check_statement failednll.rs:176rule "expr"nll.rs:229borrow_check_expr failednll.rs:340rule "place"nll.rs:464access_permitted failednll.rs:690rule "access_permitted"nll.rs:702 (failed: if_false)
rule "place"nll.rs:464access_permitted failednll.rs:690rule "access_permitted"nll.rs:702 (failed: if_false)
rule "loop"nll.rs:547borrow_check_block failednll.rs:144rule "basic block"nll.rs:159borrow_check_statement failednll.rs:176rule "expr"nll.rs:229borrow_check_expr failednll.rs:340rule "place"nll.rs:464access_permitted failednll.rs:690rule "access_permitted"nll.rs:702 (failed: if_false)
rule "place"nll.rs:464access_permitted failednll.rs:690rule "access_permitted"nll.rs:702 (failed: if_false)