diff options
Diffstat (limited to 'tests/ui/specialization/min_specialization')
-rw-r--r-- | tests/ui/specialization/min_specialization/bad-const-wf-doesnt-specialize.rs | 12 | ||||
-rw-r--r-- | tests/ui/specialization/min_specialization/bad-const-wf-doesnt-specialize.stderr | 14 |
2 files changed, 26 insertions, 0 deletions
diff --git a/tests/ui/specialization/min_specialization/bad-const-wf-doesnt-specialize.rs b/tests/ui/specialization/min_specialization/bad-const-wf-doesnt-specialize.rs new file mode 100644 index 000000000..5fd7c647c --- /dev/null +++ b/tests/ui/specialization/min_specialization/bad-const-wf-doesnt-specialize.rs @@ -0,0 +1,12 @@ +#![feature(min_specialization)] + +// An impl that has an erroneous const substitution should not specialize one +// that is well-formed. +#[derive(Clone)] +struct S<const L: usize>; + +impl<const N: i32> Copy for S<N> {} +//~^ ERROR the constant `N` is not of type `usize` +impl<const M: usize> Copy for S<M> {} + +fn main() {} diff --git a/tests/ui/specialization/min_specialization/bad-const-wf-doesnt-specialize.stderr b/tests/ui/specialization/min_specialization/bad-const-wf-doesnt-specialize.stderr new file mode 100644 index 000000000..83f311efd --- /dev/null +++ b/tests/ui/specialization/min_specialization/bad-const-wf-doesnt-specialize.stderr @@ -0,0 +1,14 @@ +error: the constant `N` is not of type `usize` + --> $DIR/bad-const-wf-doesnt-specialize.rs:8:29 + | +LL | impl<const N: i32> Copy for S<N> {} + | ^^^^ expected `usize`, found `i32` + | +note: required by a bound in `S` + --> $DIR/bad-const-wf-doesnt-specialize.rs:6:10 + | +LL | struct S<const L: usize>; + | ^^^^^^^^^^^^^^ required by this bound in `S` + +error: aborting due to previous error + |