Change:
Nightly on playground <!-- Include a backtrace in the code block by setting in your environment. E.g. . --<details<summary<strongBacktrace</strong</summary<p</p</details
we should forbid lifetimes in anonymous constants to avoid this issue.

Discussion:
use rustc_hir::def_id::{DefId, CRATE_DEF_INDEX, LOCAL_CRATE}; use rustc_hir::PrimTy; use rustc_session::config::nightly_options; <ins> use rustc_session::parse::feature_err; </ins> use rustc_span::hygiene::MacroKind; use rustc_span::symbol::{kw, sym, Ident, Symbol}; use rustc_span::{BytePos, Span, DUMMY_SP};

_ => {} } } <ins> /// Non-static lifetimes are prohibited in anonymous constants under `min_const_generics` so /// this function will emit an error if `min_const_generics` is enabled, the body identified by /// `body_id` is an anonymous constant and `lifetime_ref` is non-static. crate fn maybe_emit_forbidden_non_static_lifetime_error( &self, body_id: hir::BodyId, lifetime_ref: &'tcx hir::Lifetime, ) { let is_anon_const = matches!( self.tcx.def_kind(self.tcx.hir().body_owner_def_id(body_id)), hir::def::DefKind::AnonConst ); let is_allowed_lifetime = matches!( lifetime_ref.name, hir::LifetimeName::Implicit | hir::LifetimeName::Static | hir::LifetimeName::Underscore ); if self.tcx.features().min_const_generics && is_anon_const && !is_allowed_lifetime { feature_err( &self.tcx.sess.parse_sess, sym::const_generics, lifetime_ref.span, "a non-static lifetime is not allowed in a `const`", ) .emit(); } } </ins> }

let result = loop { match *scope { Scope::Body { id, s } => { <ins> // Non-static lifetimes are prohibited in anonymous constants under // `min_const_generics`. self.maybe_emit_forbidden_non_static_lifetime_error(id, lifetime_ref); </ins> outermost_body = Some(id); scope = s; }

<ins> #![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() {} </ins>

<ins> 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`. </ins>