rust/tests/ui/rfc-2632-const-trait-impl/specialization/issue-95187-same-trait-bound-different-constness.rs
Matthew Jasper bd928a0b5e Disallow (min) specialization imps with no items
Such implementations are usually mistakes and are not used in the
compiler or standard library (after this commit) so forbid them with
`min_specialization`.
2023-05-05 16:19:18 +01:00

58 lines
834 B
Rust

// Tests that `T: ~const Foo` in a specializing impl is treated as equivalent to
// `T: Foo` in the default impl for the purposes of specialization (i.e., it
// does not think that the user is attempting to specialize on trait `Foo`).
// check-pass
#![feature(rustc_attrs)]
#![feature(min_specialization)]
#![feature(const_trait_impl)]
#[rustc_specialization_trait]
trait Specialize {}
#[const_trait]
trait Foo {}
#[const_trait]
trait Bar {
fn bar();
}
impl<T> Bar for T
where
T: Foo,
{
default fn bar() {}
}
impl<T> const Bar for T
where
T: ~const Foo,
T: Specialize,
{
fn bar() {}
}
#[const_trait]
trait Baz {
fn baz();
}
impl<T> const Baz for T
where
T: Foo,
{
default fn baz() {}
}
impl<T> const Baz for T
where
T: ~const Foo,
T: Specialize,
{
fn baz() {}
}
fn main() {}