Add error message for using type parameter as the type of a const parameter

This commit is contained in:
varkor 2020-04-20 14:01:59 +01:00
parent 3eea7b31ee
commit f8b796b10b
5 changed files with 49 additions and 19 deletions

View file

@ -1,6 +1,6 @@
use std::marker::PhantomData;
struct B<T, const N: T>(PhantomData<[T; N]>); //~ ERROR const generics are unstable
//~^ ERROR `T` must be annotated with `#[derive(PartialEq, Eq)]`
//~^ ERROR `T` is not guaranteed to `#[derive(PartialEq, Eq)]`
fn main() {}

View file

@ -7,11 +7,13 @@ LL | struct B<T, const N: T>(PhantomData<[T; N]>);
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
= help: add `#![feature(const_generics)]` to the crate attributes to enable
error[E0741]: `T` must be annotated with `#[derive(PartialEq, Eq)]` to be used as the type of a const parameter
error[E0741]: `T` is not guaranteed to `#[derive(PartialEq, Eq)]`, so may not be used as the type of a const parameter
--> $DIR/const-param-type-depends-on-type-param-ungated.rs:3:22
|
LL | struct B<T, const N: T>(PhantomData<[T; N]>);
| ^ `T` doesn't derive both `PartialEq` and `Eq`
| ^ `T` may not derive both `PartialEq` and `Eq`
|
= note: it is not currently possible to use a type parameter as the type of a const parameter
error: aborting due to 2 previous errors

View file

@ -7,6 +7,6 @@
// details.
pub struct Dependent<T, const X: T>([(); X]);
//~^ ERROR `T` must be annotated with `#[derive(PartialEq, Eq)]`
//~^ ERROR `T` is not guaranteed to `#[derive(PartialEq, Eq)]`
fn main() {}

View file

@ -6,11 +6,13 @@ LL | #![feature(const_generics)]
|
= note: `#[warn(incomplete_features)]` on by default
error[E0741]: `T` must be annotated with `#[derive(PartialEq, Eq)]` to be used as the type of a const parameter
error[E0741]: `T` is not guaranteed to `#[derive(PartialEq, Eq)]`, so may not be used as the type of a const parameter
--> $DIR/const-param-type-depends-on-type-param.rs:9:34
|
LL | pub struct Dependent<T, const X: T>([(); X]);
| ^ `T` doesn't derive both `PartialEq` and `Eq`
| ^ `T` may not derive both `PartialEq` and `Eq`
|
= note: it is not currently possible to use a type parameter as the type of a const parameter
error: aborting due to previous error; 1 warning emitted