@@ -232,40 +232,7 @@ pub(super) fn dump_nll_mir<'tcx>(
232
232
& 0 ,
233
233
body,
234
234
|pass_where, out| {
235
- match pass_where {
236
- // Before the CFG, dump out the values for each region variable.
237
- PassWhere :: BeforeCFG => {
238
- regioncx. dump_mir ( tcx, out) ?;
239
- writeln ! ( out, "|" ) ?;
240
-
241
- if let Some ( closure_region_requirements) = closure_region_requirements {
242
- writeln ! ( out, "| Free Region Constraints" ) ?;
243
- for_each_region_constraint ( tcx, closure_region_requirements, & mut |msg| {
244
- writeln ! ( out, "| {msg}" )
245
- } ) ?;
246
- writeln ! ( out, "|" ) ?;
247
- }
248
-
249
- if borrow_set. len ( ) > 0 {
250
- writeln ! ( out, "| Borrows" ) ?;
251
- for ( borrow_idx, borrow_data) in borrow_set. iter_enumerated ( ) {
252
- writeln ! (
253
- out,
254
- "| {:?}: issued at {:?} in {:?}" ,
255
- borrow_idx, borrow_data. reserve_location, borrow_data. region
256
- ) ?;
257
- }
258
- writeln ! ( out, "|" ) ?;
259
- }
260
- }
261
-
262
- PassWhere :: BeforeLocation ( _) => { }
263
-
264
- PassWhere :: AfterTerminator ( _) => { }
265
-
266
- PassWhere :: BeforeBlock ( _) | PassWhere :: AfterLocation ( _) | PassWhere :: AfterCFG => { }
267
- }
268
- Ok ( ( ) )
235
+ emit_nll_mir ( tcx, regioncx, closure_region_requirements, borrow_set, pass_where, out)
269
236
} ,
270
237
options,
271
238
) ;
@@ -283,6 +250,51 @@ pub(super) fn dump_nll_mir<'tcx>(
283
250
} ;
284
251
}
285
252
253
+ /// Produces the actual NLL MIR sections to emit during the dumping process.
254
+ pub ( crate ) fn emit_nll_mir < ' tcx > (
255
+ tcx : TyCtxt < ' tcx > ,
256
+ regioncx : & RegionInferenceContext < ' tcx > ,
257
+ closure_region_requirements : & Option < ClosureRegionRequirements < ' tcx > > ,
258
+ borrow_set : & BorrowSet < ' tcx > ,
259
+ pass_where : PassWhere ,
260
+ out : & mut dyn io:: Write ,
261
+ ) -> io:: Result < ( ) > {
262
+ match pass_where {
263
+ // Before the CFG, dump out the values for each region variable.
264
+ PassWhere :: BeforeCFG => {
265
+ regioncx. dump_mir ( tcx, out) ?;
266
+ writeln ! ( out, "|" ) ?;
267
+
268
+ if let Some ( closure_region_requirements) = closure_region_requirements {
269
+ writeln ! ( out, "| Free Region Constraints" ) ?;
270
+ for_each_region_constraint ( tcx, closure_region_requirements, & mut |msg| {
271
+ writeln ! ( out, "| {msg}" )
272
+ } ) ?;
273
+ writeln ! ( out, "|" ) ?;
274
+ }
275
+
276
+ if borrow_set. len ( ) > 0 {
277
+ writeln ! ( out, "| Borrows" ) ?;
278
+ for ( borrow_idx, borrow_data) in borrow_set. iter_enumerated ( ) {
279
+ writeln ! (
280
+ out,
281
+ "| {:?}: issued at {:?} in {:?}" ,
282
+ borrow_idx, borrow_data. reserve_location, borrow_data. region
283
+ ) ?;
284
+ }
285
+ writeln ! ( out, "|" ) ?;
286
+ }
287
+ }
288
+
289
+ PassWhere :: BeforeLocation ( _) => { }
290
+
291
+ PassWhere :: AfterTerminator ( _) => { }
292
+
293
+ PassWhere :: BeforeBlock ( _) | PassWhere :: AfterLocation ( _) | PassWhere :: AfterCFG => { }
294
+ }
295
+ Ok ( ( ) )
296
+ }
297
+
286
298
#[ allow( rustc:: diagnostic_outside_of_impl) ]
287
299
#[ allow( rustc:: untranslatable_diagnostic) ]
288
300
pub ( super ) fn dump_annotation < ' tcx , ' infcx > (
0 commit comments