Negative coverage: prove_wc / positive impl / premise prove(decls, env, co_assumptions, Wcs::all_eq(&trait_ref.parameters, &i.trait_ref.parameters)) => c
Premise at line 79. Observed failure causes: failed_judgment.
positive impl| Line | Coverage | Source |
|---|---|---|
| 63 | ✗ | (i in decls.impl_decls(&trait_ref.trait_id)) |
| 66 | N/A | (let (env, subst) = env.existential_substitution(&i.binder)) |
| 67 | N/A | (let i = i.binder.instantiate_with(&subst).unwrap()) |
| 71 | N/A | (let t = decls.trait_decl(&i.trait_ref.trait_id).binder.instantiate_with(&i.trait_ref.parameters).unwrap()) |
| 78 | N/A | (let co_assumptions = (assumptions, trait_ref)) |
| 79 | 7 | (prove(decls, env, co_assumptions, Wcs::all_eq(&trait_ref.parameters, &i.trait_ref.parameters)) => c) |
| 80 | 2 | (prove_after(decls, c, co_assumptions, &i.where_clause) => c) |
| 86 | 4 | (prove_after(decls, c, assumptions, &t.where_clause) => c) |
| ──────── ("positive impl") | ||
| 88 | 153 | (prove_wc(decls, env, assumptions, Predicate::IsImplemented(trait_ref)) => c.pop_subst(&subst)) |
7 tests failed proving this premise:
Source location: crates/formality-rust/src/prove/test/adt_wf.rs:44
#[test]
fn not_well_formed_adt() {
let assumptions: Wcs = Wcs::t();
let goal: Parameter = term("X<u64>");
prove(
decls(),
Env::default(),
assumptions,
Relation::WellFormed(goal),
)
.assert_err(expect![[r#"
crates/formality-rust/src/prove/prove_via.rs:8:1: no applicable rules for prove_via { goal: u64 = u32, via: Foo(u64), assumptions: {Foo(u64)}, env: Env { variables: [], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_normalize.rs:56:1: no applicable rules for prove_normalize_via { goal: u64, via: Foo(u64), assumptions: {Foo(u64)}, env: Env { variables: [], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_normalize.rs:56:1: no applicable rules for prove_normalize_via { goal: u32, via: Foo(u64), assumptions: {Foo(u64)}, env: Env { variables: [], bias: Soundness, pending: [], allow_pending_outlives: false } }
the rule "trait implied bound" at (prove_wc.rs) failed because
expression evaluated to an empty collection: `decls.trait_invariants()`"#]]);
}
Failed proof tree
prove failedadt_wf.rs:38args
ruleadt_wf.rs:38prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "parameter well formed"prove_wc.rs:159prove_wf failedprove_wf.rs:11args
rule "ADT"prove_wf.rs:64prove_after failedprove_after.rs:8args
rule "prove_after"prove_after.rs:19prove failedprove_after.rs:19args
ruleprove_after.rs:19prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "positive impl"prove_wc.rs:79prove failedprove_wc.rs:79args
ruleprove_wc.rs:79prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
Source location: crates/formality-rust/src/prove/test/magic_copy.rs:25
#[test]
fn all_t_not_magic() {
test_prove(decls(), term("{} => {for<T> Magic(T)}")).assert_err(
expect![[r#"
crates/formality-rust/src/prove/prove_via.rs:8:1: no applicable rules for prove_via { goal: !ty_0 = u32, via: Copy(!ty_0), assumptions: {Copy(!ty_0)}, env: Env { variables: [!ty_0], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_normalize.rs:56:1: no applicable rules for prove_normalize_via { goal: !ty_0, via: Copy(!ty_0), assumptions: {Copy(!ty_0)}, env: Env { variables: [!ty_0], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_normalize.rs:56:1: no applicable rules for prove_normalize_via { goal: u32, via: Copy(!ty_0), assumptions: {Copy(!ty_0)}, env: Env { variables: [!ty_0], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_via.rs:8:1: no applicable rules for prove_via { goal: Magic(!ty_0), via: Copy(?ty_1), assumptions: {}, env: Env { variables: [!ty_0, ?ty_1], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_via.rs:8:1: no applicable rules for prove_via { goal: Magic(!ty_1), via: Copy(?ty_2), assumptions: {}, env: Env { variables: [!ty_1, ?ty_2], bias: Soundness, pending: [], allow_pending_outlives: false } }"#]]);
}
Failed proof tree
prove failedtest_util.rs:57args
ruletest_util.rs:57prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "forall"prove_wc.rs:35prove_wc failedprove_wc.rs:21args
rule "positive impl"prove_wc.rs:86prove_after failedprove_after.rs:8args
rule "prove_after"prove_after.rs:19prove failedprove_after.rs:19args
ruleprove_after.rs:19prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "positive impl"prove_wc.rs:79prove failedprove_wc.rs:79args
ruleprove_wc.rs:79prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
Source location: crates/formality-rust/src/prove/test/magic_copy.rs:40
#[test]
fn all_t_not_copy() {
test_prove(decls(), term("{} => {for<T> Copy(T)}")).assert_err(
expect![[r#"
crates/formality-rust/src/prove/prove_via.rs:8:1: no applicable rules for prove_via { goal: !ty_0 = u32, via: Copy(!ty_0), assumptions: {Copy(!ty_0)}, env: Env { variables: [!ty_0], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_normalize.rs:56:1: no applicable rules for prove_normalize_via { goal: !ty_0, via: Copy(!ty_0), assumptions: {Copy(!ty_0)}, env: Env { variables: [!ty_0], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_normalize.rs:56:1: no applicable rules for prove_normalize_via { goal: u32, via: Copy(!ty_0), assumptions: {Copy(!ty_0)}, env: Env { variables: [!ty_0], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_via.rs:8:1: no applicable rules for prove_via { goal: !ty_0 = u32, via: Copy(!ty_0), assumptions: {Copy(!ty_0)}, env: Env { variables: [!ty_0], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_normalize.rs:56:1: no applicable rules for prove_normalize_via { goal: !ty_0, via: Copy(!ty_0), assumptions: {Copy(!ty_0)}, env: Env { variables: [!ty_0], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_normalize.rs:56:1: no applicable rules for prove_normalize_via { goal: u32, via: Copy(!ty_0), assumptions: {Copy(!ty_0)}, env: Env { variables: [!ty_0], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_via.rs:8:1: no applicable rules for prove_via { goal: Magic(!ty_0), via: Copy(?ty_1), assumptions: {}, env: Env { variables: [!ty_0, ?ty_1], bias: Soundness, pending: [], allow_pending_outlives: false } }"#]]);
}
Failed proof tree
prove failedtest_util.rs:57args
ruletest_util.rs:57prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "forall"prove_wc.rs:35prove_wc failedprove_wc.rs:21args
rule "positive impl"prove_wc.rs:79prove failedprove_wc.rs:79args
ruleprove_wc.rs:79prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "trait implied bound"prove_wc.rs:119prove_after failedprove_after.rs:8args
rule "prove_after"prove_after.rs:19prove failedprove_after.rs:19args
ruleprove_after.rs:19prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "positive impl"prove_wc.rs:86prove_after failedprove_after.rs:8args
rule "prove_after"prove_after.rs:19prove failedprove_after.rs:19args
ruleprove_after.rs:19prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "positive impl"prove_wc.rs:79prove failedprove_wc.rs:79args
ruleprove_wc.rs:79prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
Source location: tests/borrowck.rs:473
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
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 "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:506prove_place_is_movable failednll.rs:975args
rule "copy"nll.rs:1013prove_ty_is_copy failednll.rs:956rule "trait"nll.rs:968prove failedfunction.rs:250args
rulefunction.rs:250prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "positive impl"prove_wc.rs:79prove failedprove_wc.rs:79args
ruleprove_wc.rs:79prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:69prove_after failedprove_after.rs:8args
rule "prove_after"prove_after.rs:19prove failedprove_after.rs:19args
ruleprove_after.rs:19prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-l"prove_eq.rs:69prove_after failedprove_after.rs:8args
rule "prove_after"prove_after.rs:19prove failedprove_after.rs:19args
ruleprove_after.rs:19prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "positive impl"prove_wc.rs:79prove failedprove_wc.rs:79args
ruleprove_wc.rs:79prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:69prove_after failedprove_after.rs:8args
rule "prove_after"prove_after.rs:19prove failedprove_after.rs:19args
ruleprove_after.rs:19prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-l"prove_eq.rs:69prove_after failedprove_after.rs:8args
rule "prove_after"prove_after.rs:19prove failedprove_after.rs:19args
ruleprove_after.rs:19prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38
Source location: tests/borrowck.rs:1132
fn foo() -> Datum {
exists<'r0, 'r1> {
let x: Datum = Datum { value: 0_u32 };
let r: &'r0 mut Datum = &mut 'r1 x;
let y: Datum = *r;
return y;
}
}
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 "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:506prove_place_is_movable failednll.rs:975args
rule "copy"nll.rs:1013prove_ty_is_copy failednll.rs:956rule "trait"nll.rs:968prove failedfunction.rs:250args
rulefunction.rs:250prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "positive impl"prove_wc.rs:79prove failedprove_wc.rs:79args
ruleprove_wc.rs:79prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:69prove_after failedprove_after.rs:8args
rule "prove_after"prove_after.rs:19prove failedprove_after.rs:19args
ruleprove_after.rs:19prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-l"prove_eq.rs:69prove_after failedprove_after.rs:8args
rule "prove_after"prove_after.rs:19prove failedprove_after.rs:19args
ruleprove_after.rs:19prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "positive impl"prove_wc.rs:79prove failedprove_wc.rs:79args
ruleprove_wc.rs:79prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:69prove_after failedprove_after.rs:8args
rule "prove_after"prove_after.rs:19prove failedprove_after.rs:19args
ruleprove_after.rs:19prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-l"prove_eq.rs:69prove_after failedprove_after.rs:8args
rule "prove_after"prove_after.rs:19prove failedprove_after.rs:19args
ruleprove_after.rs:19prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38
Source location: tests/borrowck.rs:3398
fn foo(f: Pair) -> () {
let s: Datum = f.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 "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:506prove_place_is_movable failednll.rs:975args
rule "copy"nll.rs:1013prove_ty_is_copy failednll.rs:956args
rule "trait"nll.rs:968prove failedfunction.rs:250args
rulefunction.rs:250prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "positive impl"prove_wc.rs:79prove failedprove_wc.rs:79args
ruleprove_wc.rs:79prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "positive impl"prove_wc.rs:79prove failedprove_wc.rs:79args
ruleprove_wc.rs:79prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "positive impl"prove_wc.rs:79prove failedprove_wc.rs:79args
ruleprove_wc.rs:79prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "positive impl"prove_wc.rs:79prove failedprove_wc.rs:79args
ruleprove_wc.rs:79prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "positive impl"prove_wc.rs:79prove failedprove_wc.rs:79args
ruleprove_wc.rs:79prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "positive impl"prove_wc.rs:79prove failedprove_wc.rs:79args
ruleprove_wc.rs:79prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "positive impl"prove_wc.rs:79prove failedprove_wc.rs:79args
ruleprove_wc.rs:79prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "positive impl"prove_wc.rs:79prove failedprove_wc.rs:79args
ruleprove_wc.rs:79prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "positive impl"prove_wc.rs:79prove failedprove_wc.rs:79args
ruleprove_wc.rs:79prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125
Source location: tests/drop.rs:154
#[test]
fn drop_impl_concrete_type_param() {
FormalityTest::new(crates![
crate Foo {
struct MyStruct<T> {
value: T,
}
impl Drop for MyStruct<u32> {}
}
])
.err(expect_test::expect![[r#"
crates/formality-rust/src/prove/prove_via.rs:8:1: no applicable rules for prove_via { goal: MyStruct<!ty_0> = MyStruct<u32>, via: Drop(MyStruct<!ty_0>), assumptions: {Drop(MyStruct<!ty_0>)}, env: Env { variables: [!ty_0], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_normalize.rs:56:1: no applicable rules for prove_normalize_via { goal: MyStruct<!ty_0>, via: Drop(MyStruct<!ty_0>), assumptions: {Drop(MyStruct<!ty_0>)}, env: Env { variables: [!ty_0], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_via.rs:8:1: no applicable rules for prove_via { goal: !ty_0 = u32, via: Drop(MyStruct<!ty_0>), assumptions: {Drop(MyStruct<!ty_0>)}, env: Env { variables: [!ty_0], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_normalize.rs:56:1: no applicable rules for prove_normalize_via { goal: !ty_0, via: Drop(MyStruct<!ty_0>), assumptions: {Drop(MyStruct<!ty_0>)}, env: Env { variables: [!ty_0], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_normalize.rs:56:1: no applicable rules for prove_normalize_via { goal: u32, via: Drop(MyStruct<!ty_0>), assumptions: {Drop(MyStruct<!ty_0>)}, env: Env { variables: [!ty_0], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_normalize.rs:56:1: no applicable rules for prove_normalize_via { goal: MyStruct<u32>, via: Drop(MyStruct<!ty_0>), assumptions: {Drop(MyStruct<!ty_0>)}, env: Env { variables: [!ty_0], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_via.rs:8:1: no applicable rules for prove_via { goal: u32 = !ty_0, via: Drop(MyStruct<!ty_0>), assumptions: {Drop(MyStruct<!ty_0>)}, env: Env { variables: [!ty_0], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_normalize.rs:56:1: no applicable rules for prove_normalize_via { goal: u32, via: Drop(MyStruct<!ty_0>), assumptions: {Drop(MyStruct<!ty_0>)}, env: Env { variables: [!ty_0], bias: Soundness, pending: [], allow_pending_outlives: false } }
crates/formality-rust/src/prove/prove_normalize.rs:56:1: no applicable rules for prove_normalize_via { goal: !ty_0, via: Drop(MyStruct<!ty_0>), assumptions: {Drop(MyStruct<!ty_0>)}, env: Env { variables: [!ty_0], bias: Soundness, pending: [], allow_pending_outlives: false } }
the rule "trait implied bound" at (prove_wc.rs) failed because
expression evaluated to an empty collection: `decls.trait_invariants()`"#]])
}
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 "trait impl"mod.rs:194check_drop_impl_always_applicable failedimpls.rs:301rule "Drop impl is always applicable"impls.rs:331prove failedfunction.rs:250args
rulefunction.rs:250prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "positive impl"prove_wc.rs:79prove failedprove_wc.rs:79args
ruleprove_wc.rs:79prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "rigid"prove_eq.rs:47prove failedprove_eq.rs:47args
ruleprove_eq.rs:47prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "rigid"prove_eq.rs:47prove failedprove_eq.rs:47args
ruleprove_eq.rs:47prove_wc_list failedprove_wc_list.rs:8args
rule "some"prove_wc_list.rs:26prove_wc failedprove_wc.rs:21args
rule "assumption - relation"prove_wc.rs:54prove_via failedprove_via.rs:8args
rule "eq"prove_wc.rs:125prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args
rule "symmetric"prove_eq.rs:38prove_eq failedprove_eq.rs:23args
rule "normalize-l"prove_eq.rs:68prove_normalize failedprove_normalize.rs:20args
rule "normalize-via-assumption"prove_normalize.rs:34prove_normalize_via failedprove_normalize.rs:56args