diff options
| author | David Wood <david@davidtw.co> | 2020-09-15 14:38:41 +0100 |
|---|---|---|
| committer | David Wood <david@davidtw.co> | 2020-10-02 13:54:25 +0100 |
| commit | eacfb2b265fc108a0b024e6afacaf3f28fd0235e (patch) | |
| tree | 55b8ef76f8e9385ddbfab3d0fc4c15f6bb6067d1 /src/test | |
| parent | 154f1f544dd68f7b53ff8d9952811e855f4c2d7c (diff) | |
| download | rust-eacfb2b265fc108a0b024e6afacaf3f28fd0235e.tar.gz rust-eacfb2b265fc108a0b024e6afacaf3f28fd0235e.zip | |
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>
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/const-generics/min_const_generics/forbid-non-static-lifetimes.rs | 27 | ||||
| -rw-r--r-- | src/test/ui/const-generics/min_const_generics/forbid-non-static-lifetimes.stderr | 21 |
2 files changed, 48 insertions, 0 deletions
diff --git a/src/test/ui/const-generics/min_const_generics/forbid-non-static-lifetimes.rs b/src/test/ui/const-generics/min_const_generics/forbid-non-static-lifetimes.rs new file mode 100644 index 00000000000..02944e2bff2 --- /dev/null +++ b/src/test/ui/const-generics/min_const_generics/forbid-non-static-lifetimes.rs @@ -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() {} diff --git a/src/test/ui/const-generics/min_const_generics/forbid-non-static-lifetimes.stderr b/src/test/ui/const-generics/min_const_generics/forbid-non-static-lifetimes.stderr new file mode 100644 index 00000000000..cdfd491e395 --- /dev/null +++ b/src/test/ui/const-generics/min_const_generics/forbid-non-static-lifetimes.stderr @@ -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`. |
