Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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
LineCoverageSource
114✗(if impl_a != impl_b)
115✗(if impl_a.trait_id() == impl_b.trait_id())
116N/A(let (env, a) = Env::default().instantiate_universally(&impl_a.binder))
117N/A(let (env, b) = env.instantiate_universally(&impl_b.binder))
1181(wc in a.where_clauses.iter().chain(&b.where_clauses).flat_map(|wc| wc.invert()))
1195(prove_goal(program, env, (Wcs::all_eq(&a.trait_ref().parameters, &b.trait_ref().parameters), &a.where_clauses, &b.where_clauses), wc) => ())
──────── ("inverted")
1211(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