@@ -234,15 +234,21 @@ pub enum ObligationCauseCode<'tcx> {
234234 /// This is the trait reference from the given projection.
235235 ProjectionWf ( ty:: ProjectionTy < ' tcx > ) ,
236236
237- /// In an impl of trait `X` for type `Y`, type `Y` must
238- /// also implement all supertraits of `X` .
237+ /// Must satisfy all of the where-clause predicates of the
238+ /// given item .
239239 ItemObligation ( DefId ) ,
240240
241- ExprItemObligation ( DefId , rustc_hir:: HirId , usize ) ,
242-
243- /// Like `ItemObligation`, but with extra detail on the source of the obligation.
241+ /// Like `ItemObligation`, but carries the span of the
242+ /// predicate when it can be identified.
244243 BindingObligation ( DefId , Span ) ,
245244
245+ /// Like `ItemObligation`, but carries the `HirId` of the
246+ /// expression that caused the obligation, and the `usize`
247+ /// indicates exactly which predicate it is in the list of
248+ /// instantiated predicates.
249+ ExprItemObligation ( DefId , rustc_hir:: HirId , usize ) ,
250+
251+ /// Combines `ExprItemObligation` and `BindingObligation`.
246252 ExprBindingObligation ( DefId , Span , rustc_hir:: HirId , usize ) ,
247253
248254 /// A type like `&'a T` is WF only if `T: 'a`.
0 commit comments