Add failing test for projections used as const generic

This commit is contained in:
Guillaume Gomez 2022-11-22 16:02:37 +01:00
parent b7463e8bdb
commit 2d5d692053
2 changed files with 31 additions and 0 deletions

View File

@ -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>();
}

View File

@ -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