rust/tests/ui/traits/const-traits/predicate-entailment-fails.rs
2024-11-03 18:59:31 +00:00

43 lines
1016 B
Rust

//@ compile-flags: -Znext-solver
#![feature(const_trait_impl)]
#[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() {}