//@ compile-flags: -Znext-solver #![feature(const_trait_impl)] //@ revisions: yy yn ny nn #[cfg_attr(any(yy, yn), const_trait)] trait Foo { fn a(&self); } #[cfg_attr(any(yy, ny), const_trait)] trait Bar: ~const Foo {} //[ny,nn]~^ ERROR: `~const` can only be applied to `#[const_trait]` //[ny,nn]~| ERROR: `~const` can only be applied to `#[const_trait]` //[ny,nn]~| ERROR: `~const` can only be applied to `#[const_trait]` //[ny]~| ERROR: `~const` can only be applied to `#[const_trait]` //[ny]~| ERROR: `~const` can only be applied to `#[const_trait]` //[yn,nn]~^^^^^^ ERROR: `~const` is not allowed here const fn foo(x: &T) { x.a(); //[yy,yn]~^ ERROR the trait bound `T: ~const Foo` //[nn,ny]~^^ ERROR cannot call non-const fn `::a` in constant functions } fn main() {}