// Tests that trait bounds on specializing trait impls must be `~const` if the // same bound is present on the default impl and is `~const` there. // check-pass // FIXME(effects) ^ should error #![feature(const_trait_impl)] #![feature(rustc_attrs)] #![feature(min_specialization)] #[rustc_specialization_trait] trait Specialize {} #[const_trait] trait Foo {} #[const_trait] trait Bar { fn bar(); } impl const Bar for T where T: ~const Foo, { default fn bar() {} } impl Bar for T where T: Foo, //FIXME ~ ERROR missing `~const` qualifier T: Specialize, { fn bar() {} } #[const_trait] trait Baz { fn baz(); } impl const Baz for T where T: ~const Foo, { default fn baz() {} } impl const Baz for T //FIXME ~ ERROR conflicting implementations of trait `Baz` where T: Foo, T: Specialize, { fn baz() {} } fn main() {}