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: check_crate_item / neg trait impl / premise check_neg_trait_impl(program, i) => ()

Premise at line 212. Observed failure causes: failed_judgment.

neg trait impl
LineCoverageSource
2123(check_neg_trait_impl(program, i) => ())
──────── ("neg trait impl")
2143(check_crate_item(program, CrateItem::NegTraitImpl(i), crate_id) => ())

3 tests failed proving this premise:


Source location: tests/basic_tests.rs:466 (all coverage from this test)

#[test]
fn nonexistant_trait() {
    FormalityTest::new(crates![crate core {
        struct S {}
        impl !Nonexistent for S {}
    }])
    .err(expect_test::expect![[r#"
        the rule "check_neg_trait_impl" at (impls.rs) failed because
          no trait named `Nonexistent`"#]]);
}
Failed proof tree

Source location: tests/decl_safety.rs:59 (all coverage from this test)

#[test]
fn unsafe_trait_negative_impl_mismatch() {
    FormalityTest::new(crates![crate baguette {
        #![feature(negative_impls)]
        unsafe trait Foo {}
        unsafe impl !Foo for u32 {}
    }])
    .rustc_err(expect_test::expect![[r#"
        error[E0198]: negative impls cannot be unsafe
         --> lib.rs
          |
        5 | unsafe impl !Foo for u32 {}
          | ------      -^^^
          | |           |
          | |           negative because of this
          | unsafe because of this

        For more information about this error, try `rustc --explain E0198`.
        error: could not compile `baguette` (lib) due to 1 previous error
    "#]])
    .err(expect_test::expect![[r#"
        the rule "check_neg_trait_impl" at (impls.rs) failed because
          negative impls cannot be unsafe"#]])
}
Failed proof tree

Source location: tests/decl_safety.rs:84 (all coverage from this test)

#[test]
fn safe_trait_negative_impl_mismatch() {
    FormalityTest::new(crates![crate baguette {
        #![feature(negative_impls)]
        trait Foo {}
        unsafe impl !Foo for u32 {}
    }])
    .rustc_err(expect_test::expect![[r#"
        error[E0198]: negative impls cannot be unsafe
         --> lib.rs
          |
        5 | unsafe impl !Foo for u32 {}
          | ------      -^^^
          | |           |
          | |           negative because of this
          | unsafe because of this

        For more information about this error, try `rustc --explain E0198`.
        error: could not compile `baguette` (lib) due to 1 previous error
    "#]])
    .err(expect_test::expect![[r#"
        the rule "check_neg_trait_impl" at (impls.rs) failed because
          negative impls cannot be unsafe"#]])
}
Failed proof tree