rust/tests/ui/traits/const-traits/predicate-entailment-fails.rs
Michael Goulet 25c9253379 Add tests
2024-10-24 09:46:36 +00:00

44 lines
1.0 KiB
Rust

//@ compile-flags: -Znext-solver
#![feature(const_trait_impl, effects)]
//~^ WARN the feature `effects` is incomplete
#[const_trait] trait Bar {}
impl const Bar for () {}
#[const_trait] trait TildeConst {
type Bar<T> where T: ~const Bar;
fn foo<T>() where T: ~const Bar;
}
impl TildeConst for () {
type Bar<T> = () where T: const Bar;
//~^ ERROR impl has stricter requirements than trait
fn foo<T>() where T: const Bar {}
//~^ ERROR impl has stricter requirements than trait
}
#[const_trait] trait NeverConst {
type Bar<T> where T: Bar;
fn foo<T>() where T: Bar;
}
impl NeverConst for i32 {
type Bar<T> = () where T: const Bar;
//~^ ERROR impl has stricter requirements than trait
fn foo<T>() where T: const Bar {}
//~^ ERROR impl has stricter requirements than trait
}
impl const NeverConst for u32 {
type Bar<T> = () where T: ~const Bar;
//~^ ERROR impl has stricter requirements than trait
fn foo<T>() where T: ~const Bar {}
//~^ ERROR impl has stricter requirements than trait
}
fn main() {}