Negative coverage: overlap_check_impl / inverted / premise wc in a.where_clauses.iter().chain(&b.where_clauses).flat_map(\|wc\| wc.invert())
Premise at line 118. Observed failure causes: empty_collection.
inverted| Line | Coverage | Source |
|---|---|---|
| 114 | ✗ | (if impl_a != impl_b) |
| 115 | ✗ | (if impl_a.trait_id() == impl_b.trait_id()) |
| 116 | N/A | (let (env, a) = Env::default().instantiate_universally(&impl_a.binder)) |
| 117 | N/A | (let (env, b) = env.instantiate_universally(&impl_b.binder)) |
| 118 | 1 | (wc in a.where_clauses.iter().chain(&b.where_clauses).flat_map(|wc| wc.invert())) |
| 119 | 5 | (prove_goal(program, env, (Wcs::all_eq(&a.trait_ref().parameters, &b.trait_ref().parameters), &a.where_clauses, &b.where_clauses), wc) => ()) |
| ──────── ("inverted") | ||
| 121 | 1 | (overlap_check_impl(program, impl_a, impl_b) => ()) |
1 test failed proving this premise:
Source location: tests/coherence_overlap.rs:355 (all coverage from this test)
#[test]
fn u32_T_impls() {
FormalityTest::new(crates![crate core {
trait Foo {}
impl Foo for u32 {}
impl<T> Foo for T {}
}])
.err(expect_test::expect![[r#"
the rule "different trait" at (coherence.rs) failed because
condition evaluated to false: `impl_a.trait_id() != impl_b.trait_id()`
the rule "inverted" at (coherence.rs) failed because
expression evaluated to an empty collection: `a.where_clauses.iter().chain(&b.where_clauses).flat_map(|wc| wc.invert())`
the rule "not goal" at (coherence.rs) failed because
failed to prove {u32 = !ty_1} given {}, got [Constraints { env: Env { variables: [!ty_1], bias: Soundness, pending: [], allow_pending_outlives: false }, known_true: false, substitution: {} }]
the rule "same impl" at (coherence.rs) failed because
condition evaluated to false: `impl_a == impl_b`
impl_a = impl Foo for u32 { }
impl_b = impl <ty> Foo for ^ty0_0 { }"#]])
}
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:74check_coherence failedcoherence.rs:7args
rule "check_coherence"coherence.rs:18overlap_check_impl failedcoherence.rs:64args
rule "inverted"coherence.rs:118 (failed: empty_collection)