@@ -224,22 +224,14 @@ enum LifetimeUseSet {
224224
225225#[ derive( Copy , Clone , Debug ) ]
226226enum LifetimeRibKind {
227- /// This rib acts as a barrier to forbid reference to lifetimes of a parent item.
228- Item ,
229-
227+ // -- Ribs introducing named lifetimes
228+ //
230229 /// This rib declares generic parameters.
230+ /// Only for this kind the `LifetimeRib::bindings` field can be non-empty.
231231 Generics { binder : NodeId , span : Span , kind : LifetimeBinderKind } ,
232232
233- /// FIXME(const_generics): This patches over an ICE caused by non-'static lifetimes in const
234- /// generics. We are disallowing this until we can decide on how we want to handle non-'static
235- /// lifetimes in const generics. See issue #74052 for discussion.
236- ConstGeneric ,
237-
238- /// Non-static lifetimes are prohibited in anonymous constants under `min_const_generics`.
239- /// This function will emit an error if `generic_const_exprs` is not enabled, the body identified by
240- /// `body_id` is an anonymous constant and `lifetime_ref` is non-static.
241- AnonConst ,
242-
233+ // -- Ribs introducing unnamed lifetimes
234+ //
243235 /// Create a new anonymous lifetime parameter and reference it.
244236 ///
245237 /// If `report_in_path`, report an error when encountering lifetime elision in a path:
@@ -256,16 +248,31 @@ enum LifetimeRibKind {
256248 /// ```
257249 AnonymousCreateParameter { binder : NodeId , report_in_path : bool } ,
258250
251+ /// Replace all anonymous lifetimes by provided lifetime.
252+ Elided ( LifetimeRes ) ,
253+
254+ // -- Barrier ribs that stop lifetime lookup, or continue it but produce an error later.
255+ //
259256 /// Give a hard error when either `&` or `'_` is written. Used to
260257 /// rule out things like `where T: Foo<'_>`. Does not imply an
261258 /// error on default object bounds (e.g., `Box<dyn Foo>`).
262259 AnonymousReportError ,
263260
264- /// Replace all anonymous lifetimes by provided lifetime.
265- Elided ( LifetimeRes ) ,
266-
267261 /// Signal we cannot find which should be the anonymous lifetime.
268262 ElisionFailure ,
263+
264+ /// FIXME(const_generics): This patches over an ICE caused by non-'static lifetimes in const
265+ /// generics. We are disallowing this until we can decide on how we want to handle non-'static
266+ /// lifetimes in const generics. See issue #74052 for discussion.
267+ ConstGeneric ,
268+
269+ /// Non-static lifetimes are prohibited in anonymous constants under `min_const_generics`.
270+ /// This function will emit an error if `generic_const_exprs` is not enabled, the body
271+ /// identified by `body_id` is an anonymous constant and `lifetime_ref` is non-static.
272+ AnonConst ,
273+
274+ /// This rib acts as a barrier to forbid reference to lifetimes of a parent item.
275+ Item ,
269276}
270277
271278#[ derive( Copy , Clone , Debug ) ]
0 commit comments