diff options
| author | Guillaume Gomez <guillaume.gomez@huawei.com> | 2022-11-22 16:02:37 +0100 |
|---|---|---|
| committer | Guillaume Gomez <guillaume.gomez@huawei.com> | 2022-11-22 16:02:37 +0100 |
| commit | 2d5d692053590aa173ffebd3d5fc9707dc39ea9f (patch) | |
| tree | a21fba9dea412a7d3e20bdf6f5d7878baffd3767 /src | |
| parent | b7463e8bdb7b039e75241dcc4ea65bbd24d5c608 (diff) | |
| download | rust-2d5d692053590aa173ffebd3d5fc9707dc39ea9f.tar.gz rust-2d5d692053590aa173ffebd3d5fc9707dc39ea9f.zip | |
Add failing test for projections used as const generic
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/ui/const-generics/projection-as-arg-const.rs | 20 | ||||
| -rw-r--r-- | src/test/ui/const-generics/projection-as-arg-const.stderr | 11 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/test/ui/const-generics/projection-as-arg-const.rs b/src/test/ui/const-generics/projection-as-arg-const.rs new file mode 100644 index 00000000000..903548c75db --- /dev/null +++ b/src/test/ui/const-generics/projection-as-arg-const.rs @@ -0,0 +1,20 @@ +// This is currently not possible to use projections as const generics. +// More information about this available here: +// https://github.com/rust-lang/rust/pull/104443#discussion_r1029375633 + +pub trait Identity { + type Identity; +} + +impl<T> Identity for T { + type Identity = Self; +} + +pub fn foo<const X: <i32 as Identity>::Identity>() { +//~^ ERROR + assert!(X == 12); +} + +fn main() { + foo::<12>(); +} diff --git a/src/test/ui/const-generics/projection-as-arg-const.stderr b/src/test/ui/const-generics/projection-as-arg-const.stderr new file mode 100644 index 00000000000..803ed9c9597 --- /dev/null +++ b/src/test/ui/const-generics/projection-as-arg-const.stderr @@ -0,0 +1,11 @@ +error: `<i32 as Identity>::Identity` is forbidden as the type of a const generic parameter + --> $DIR/projection-as-arg-const.rs:13:21 + | +LL | pub fn foo<const X: <i32 as Identity>::Identity>() { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: the only supported types are integers, `bool` and `char` + = help: more complex types are supported with `#![feature(adt_const_params)]` + +error: aborting due to previous error + |
