884af362f2
Previously, any associated function could have `~const` trait bounds on generic parameters, which could lead to ICEs when these bounds were used on associated functions of non-`#[const_trait] trait` or non-`impl const` blocks. Includes changes as per @fee1-dead's comments in #116210.
29 lines
448 B
Rust
29 lines
448 B
Rust
#![feature(const_trait_impl)]
|
|
|
|
#[const_trait]
|
|
trait Bar {}
|
|
|
|
trait Foo {
|
|
fn a();
|
|
fn b() where Self: ~const Bar;
|
|
//~^ ERROR `~const` is not allowed here
|
|
fn c<T: ~const Bar>();
|
|
//~^ ERROR `~const` is not allowed here
|
|
}
|
|
|
|
fn test1<T: Foo>() {
|
|
T::a();
|
|
T::b();
|
|
//~^ ERROR the trait bound
|
|
T::c::<T>();
|
|
//~^ ERROR the trait bound
|
|
}
|
|
|
|
fn test2<T: Foo + Bar>() {
|
|
T::a();
|
|
T::b();
|
|
T::c::<T>();
|
|
}
|
|
|
|
fn main() {}
|