Add failing test for projections used as const generic
This commit is contained in:
parent
b7463e8bdb
commit
2d5d692053
20
src/test/ui/const-generics/projection-as-arg-const.rs
Normal file
20
src/test/ui/const-generics/projection-as-arg-const.rs
Normal 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>();
|
||||
}
|
11
src/test/ui/const-generics/projection-as-arg-const.stderr
Normal file
11
src/test/ui/const-generics/projection-as-arg-const.stderr
Normal 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
|
||||
|
Loading…
Reference in New Issue
Block a user