@@ -120,7 +120,8 @@ impl<'a, 'tcx> FulfillmentContext<'tcx> {
120120 & mut self ,
121121 selcx : & mut SelectionContext < ' a , ' tcx > ,
122122 ) -> Result < ( ) , Vec < FulfillmentError < ' tcx > > > {
123- debug ! ( "select(obligation-forest-size={})" , self . predicates. len( ) ) ;
123+ let span = debug_span ! ( "select" , obligation_forest_size = ?self . predicates. len( ) ) ;
124+ let _enter = span. enter ( ) ;
124125
125126 let mut errors = Vec :: new ( ) ;
126127
@@ -173,7 +174,7 @@ impl<'tcx> TraitEngine<'tcx> for FulfillmentContext<'tcx> {
173174 projection_ty : ty:: ProjectionTy < ' tcx > ,
174175 cause : ObligationCause < ' tcx > ,
175176 ) -> Ty < ' tcx > {
176- debug ! ( "normalize_projection_type(projection_ty={:?})" , projection_ty ) ;
177+ debug ! ( ?projection_ty , "normalize_projection_type" ) ;
177178
178179 debug_assert ! ( !projection_ty. has_escaping_bound_vars( ) ) ;
179180
@@ -191,7 +192,7 @@ impl<'tcx> TraitEngine<'tcx> for FulfillmentContext<'tcx> {
191192 ) ;
192193 self . register_predicate_obligations ( infcx, obligations) ;
193194
194- debug ! ( "normalize_projection_type: result={:?}" , normalized_ty) ;
195+ debug ! ( ? normalized_ty) ;
195196
196197 normalized_ty
197198 }
@@ -205,7 +206,7 @@ impl<'tcx> TraitEngine<'tcx> for FulfillmentContext<'tcx> {
205206 // debug output much nicer to read and so on.
206207 let obligation = infcx. resolve_vars_if_possible ( & obligation) ;
207208
208- debug ! ( "register_predicate_obligation(obligation={:?})" , obligation ) ;
209+ debug ! ( ?obligation , "register_predicate_obligation" ) ;
209210
210211 assert ! ( !infcx. is_in_snapshot( ) || self . usable_in_snapshot) ;
211212
@@ -342,7 +343,7 @@ impl<'a, 'b, 'tcx> FulfillProcessor<'a, 'b, 'tcx> {
342343 self . selcx . infcx ( ) . resolve_vars_if_possible ( & obligation. predicate ) ;
343344 }
344345
345- debug ! ( "process_obligation: obligation = {:?} cause = {:?}" , obligation, obligation. cause) ;
346+ debug ! ( ? obligation, ? obligation. cause, "process_obligation" ) ;
346347
347348 let infcx = self . selcx . infcx ( ) ;
348349
@@ -509,7 +510,7 @@ impl<'a, 'b, 'tcx> FulfillProcessor<'a, 'b, 'tcx> {
509510 }
510511
511512 ty:: PredicateAtom :: ConstEquate ( c1, c2) => {
512- debug ! ( "equating consts: c1={:?} c2={:?}" , c1 , c2 ) ;
513+ debug ! ( ?c1 , ?c2 , "equating consts" ) ;
513514 if self . selcx . tcx ( ) . features ( ) . const_evaluatable_checked {
514515 // FIXME: we probably should only try to unify abstract constants
515516 // if the constants depend on generic parameters.
@@ -601,6 +602,7 @@ impl<'a, 'b, 'tcx> FulfillProcessor<'a, 'b, 'tcx> {
601602 }
602603 }
603604
605+ #[ instrument( level = "debug" , skip( self , obligation, stalled_on) ) ]
604606 fn process_trait_obligation (
605607 & mut self ,
606608 obligation : & PredicateObligation < ' tcx > ,
@@ -613,26 +615,20 @@ impl<'a, 'b, 'tcx> FulfillProcessor<'a, 'b, 'tcx> {
613615 // FIXME: consider caching errors too.
614616 if infcx. predicate_must_hold_considering_regions ( obligation) {
615617 debug ! (
616- "selecting trait `{:?}` at depth {} evaluated to holds" ,
617- obligation. predicate , obligation . recursion_depth
618+ "selecting trait at depth {} evaluated to holds" ,
619+ obligation. recursion_depth
618620 ) ;
619621 return ProcessResult :: Changed ( vec ! [ ] ) ;
620622 }
621623 }
622624
623625 match self . selcx . select ( & trait_obligation) {
624626 Ok ( Some ( impl_source) ) => {
625- debug ! (
626- "selecting trait `{:?}` at depth {} yielded Ok(Some)" ,
627- trait_obligation. predicate, obligation. recursion_depth
628- ) ;
627+ debug ! ( "selecting trait at depth {} yielded Ok(Some)" , obligation. recursion_depth) ;
629628 ProcessResult :: Changed ( mk_pending ( impl_source. nested_obligations ( ) ) )
630629 }
631630 Ok ( None ) => {
632- debug ! (
633- "selecting trait `{:?}` at depth {} yielded Ok(None)" ,
634- trait_obligation. predicate, obligation. recursion_depth
635- ) ;
631+ debug ! ( "selecting trait at depth {} yielded Ok(None)" , obligation. recursion_depth) ;
636632
637633 // This is a bit subtle: for the most part, the
638634 // only reason we can fail to make progress on
@@ -652,10 +648,7 @@ impl<'a, 'b, 'tcx> FulfillProcessor<'a, 'b, 'tcx> {
652648 ProcessResult :: Unchanged
653649 }
654650 Err ( selection_err) => {
655- info ! (
656- "selecting trait `{:?}` at depth {} yielded Err" ,
657- trait_obligation. predicate, obligation. recursion_depth
658- ) ;
651+ info ! ( "selecting trait at depth {} yielded Err" , obligation. recursion_depth) ;
659652
660653 ProcessResult :: Error ( CodeSelectionError ( selection_err) )
661654 }
0 commit comments