Deny capturing late-bound non-lifetime param in anon const

This commit is contained in:
Michael Goulet 2023-02-28 05:59:54 +00:00
parent b583ede652
commit cbf4d4e3a5
5 changed files with 121 additions and 5 deletions

View file

@ -0,0 +1,11 @@
#![feature(non_lifetime_binders, generic_const_exprs)]
//~^ WARN the feature `non_lifetime_binders` is incomplete
//~| WARN the feature `generic_const_exprs` is incomplete
fn foo() -> usize
where
for<T> [i32; { let _: T = todo!(); 0 }]:,
//~^ ERROR cannot capture late-bound type parameter in a constant
{}
fn main() {}

View file

@ -0,0 +1,27 @@
warning: the feature `non_lifetime_binders` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/late-bound-in-anon-ct.rs:1:12
|
LL | #![feature(non_lifetime_binders, generic_const_exprs)]
| ^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #108185 <https://github.com/rust-lang/rust/issues/108185> for more information
= note: `#[warn(incomplete_features)]` on by default
warning: the feature `generic_const_exprs` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/late-bound-in-anon-ct.rs:1:34
|
LL | #![feature(non_lifetime_binders, generic_const_exprs)]
| ^^^^^^^^^^^^^^^^^^^
|
= note: see issue #76560 <https://github.com/rust-lang/rust/issues/76560> for more information
error: cannot capture late-bound type parameter in a constant
--> $DIR/late-bound-in-anon-ct.rs:7:27
|
LL | for<T> [i32; { let _: T = todo!(); 0 }]:,
| - ^
| |
| parameter defined here
error: aborting due to previous error; 2 warnings emitted