@@ -1845,13 +1845,18 @@ pub(super) fn check_coroutine_obligations(
18451845
18461846    debug ! ( ?typeck_results. coroutine_stalled_predicates) ; 
18471847
1848+     let  mode = if  tcx. next_trait_solver_globally ( )  { 
1849+         TypingMode :: post_borrowck_analysis ( tcx,  def_id) 
1850+     }  else  { 
1851+         TypingMode :: analysis_in_body ( tcx,  def_id) 
1852+     } ; 
1853+ 
18481854    let  infcx = tcx
18491855        . infer_ctxt ( ) 
18501856        // typeck writeback gives us predicates with their regions erased. 
18511857        // As borrowck already has checked lifetimes, we do not need to do it again. 
18521858        . ignoring_regions ( ) 
1853-         // FIXME(#132279): This should eventually use the already defined hidden types. 
1854-         . build ( TypingMode :: analysis_in_body ( tcx,  def_id) ) ; 
1859+         . build ( mode) ; 
18551860
18561861    let  ocx = ObligationCtxt :: new_with_diagnostics ( & infcx) ; 
18571862    for  ( predicate,  cause)  in  & typeck_results. coroutine_stalled_predicates  { 
@@ -1864,12 +1869,14 @@ pub(super) fn check_coroutine_obligations(
18641869        return  Err ( infcx. err_ctxt ( ) . report_fulfillment_errors ( errors) ) ; 
18651870    } 
18661871
1867-     // Check that any hidden types found when checking these stalled coroutine obligations 
1868-     // are valid. 
1869-     for  ( key,  ty)  in  infcx. take_opaque_types ( )  { 
1870-         let  hidden_type = infcx. resolve_vars_if_possible ( ty. hidden_type ) ; 
1871-         let  key = infcx. resolve_vars_if_possible ( key) ; 
1872-         sanity_check_found_hidden_type ( tcx,  key,  hidden_type) ?; 
1872+     if  !tcx. next_trait_solver_globally ( )  { 
1873+         // Check that any hidden types found when checking these stalled coroutine obligations 
1874+         // are valid. 
1875+         for  ( key,  ty)  in  infcx. take_opaque_types ( )  { 
1876+             let  hidden_type = infcx. resolve_vars_if_possible ( ty. hidden_type ) ; 
1877+             let  key = infcx. resolve_vars_if_possible ( key) ; 
1878+             sanity_check_found_hidden_type ( tcx,  key,  hidden_type) ?; 
1879+         } 
18731880    } 
18741881
18751882    Ok ( ( ) ) 
0 commit comments