Negative coverage: prove_wc / positive impl / premise prove_after(decls, c, co_assumptions, &i.where_clause) => c
Premise at line 80. 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)) |
2 tests failed proving this premise:
Source location: tests/drop.rs:132
#[test]
fn drop_impl_extra_where_clause() {
FormalityTest::new(crates![
crate Foo {
trait Clone {}
struct MyStruct<T> {
value: T,
}
impl<T> Drop for MyStruct<T> where T: Clone {}
}
])
.err(expect_test::expect![[r#"
crates/formality-rust/src/prove/prove_via.rs:8:1: no applicable rules for prove_via { goal: Clone(!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()`
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:80prove_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 - predicate"prove_wc.rs:48prove_via failedprove_via.rs:8args
rule "trait implied bound"prove_wc.rs:115 (failed: empty_collection)
Source location: tests/drop.rs:191
#[test]
fn drop_impl_enum_extra_where_clause() {
FormalityTest::new(crates![
crate Foo {
trait Clone {}
enum MyEnum<T> {
Value{value: T},
}
impl<T> Drop for MyEnum<T> where T: Clone {}
}
])
.err(expect_test::expect![[r#"
crates/formality-rust/src/prove/prove_via.rs:8:1: no applicable rules for prove_via { goal: Clone(!ty_0), via: Drop(MyEnum<!ty_0>), assumptions: {Drop(MyEnum<!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()`
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:80prove_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 - predicate"prove_wc.rs:48prove_via failedprove_via.rs:8args
rule "trait implied bound"prove_wc.rs:115 (failed: empty_collection)