resolve: prohibit anon const non-static lifetimes
This commit modifies name resolution to emit an error when non-static lifetimes are used in anonymous constants when the `min_const_generics` feature is enabled. Signed-off-by: David Wood <david@davidtw.co>
This commit is contained in:
parent
154f1f544d
commit
eacfb2b265
4 changed files with 81 additions and 0 deletions
|
|
@ -0,0 +1,27 @@
|
|||
#![feature(min_const_generics)]
|
||||
|
||||
// This test checks that non-static lifetimes are prohibited under `min_const_generics`. It
|
||||
// currently emits an error with `min_const_generics`. This will ICE under `const_generics`.
|
||||
|
||||
fn test<const N: usize>() {}
|
||||
|
||||
fn issue_75323_and_74447_1<'a>() -> &'a () {
|
||||
test::<{ let _: &'a (); 3 },>();
|
||||
//~^ ERROR a non-static lifetime is not allowed in a `const`
|
||||
&()
|
||||
}
|
||||
|
||||
fn issue_75323_and_74447_2() {
|
||||
test::<{ let _: &(); 3 },>();
|
||||
}
|
||||
|
||||
fn issue_75323_and_74447_3() {
|
||||
test::<{ let _: &'static (); 3 },>();
|
||||
}
|
||||
|
||||
fn issue_73375<'a>() {
|
||||
[(); (|_: &'a u8| (), 0).1];
|
||||
//~^ ERROR a non-static lifetime is not allowed in a `const`
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
error[E0658]: a non-static lifetime is not allowed in a `const`
|
||||
--> $DIR/forbid-non-static-lifetimes.rs:9:22
|
||||
|
|
||||
LL | test::<{ let _: &'a (); 3 },>();
|
||||
| ^^
|
||||
|
|
||||
= 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[E0658]: a non-static lifetime is not allowed in a `const`
|
||||
--> $DIR/forbid-non-static-lifetimes.rs:23:16
|
||||
|
|
||||
LL | [(); (|_: &'a u8| (), 0).1];
|
||||
| ^^
|
||||
|
|
||||
= 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: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0658`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue