@@ -17,6 +17,7 @@ use rustc_middle::dep_graph::{
17
17
use rustc_middle:: query:: on_disk_cache:: AbsoluteBytePos ;
18
18
use rustc_middle:: query:: on_disk_cache:: { CacheDecoder , CacheEncoder , EncodedDepNodeIndex } ;
19
19
use rustc_middle:: query:: Key ;
20
+ use rustc_middle:: ty:: print:: with_reduced_queries;
20
21
use rustc_middle:: ty:: tls:: { self , ImplicitCtxt } ;
21
22
use rustc_middle:: ty:: { self , TyCtxt } ;
22
23
use rustc_query_system:: dep_graph:: { DepNodeParams , HasDepContext } ;
@@ -304,22 +305,26 @@ pub(crate) fn create_query_frame<
304
305
kind : DepKind ,
305
306
name : & ' static str ,
306
307
) -> QueryStackFrame {
308
+ // If reduced queries are requested, we may be printing a query stack due
309
+ // to a panic. Avoid using `default_span` and `def_kind` in that case.
310
+ let reduce_queries = with_reduced_queries ( ) ;
311
+
307
312
// Avoid calling queries while formatting the description
308
313
let description = ty:: print:: with_no_queries!( do_describe( tcx, key) ) ;
309
314
let description = if tcx. sess . verbose_internals ( ) {
310
315
format ! ( "{description} [{name:?}]" )
311
316
} else {
312
317
description
313
318
} ;
314
- let span = if kind == dep_graph:: dep_kinds:: def_span {
319
+ let span = if kind == dep_graph:: dep_kinds:: def_span || reduce_queries {
315
320
// The `def_span` query is used to calculate `default_span`,
316
321
// so exit to avoid infinite recursion.
317
322
None
318
323
} else {
319
324
Some ( key. default_span ( tcx) )
320
325
} ;
321
326
let def_id = key. key_as_def_id ( ) ;
322
- let def_kind = if kind == dep_graph:: dep_kinds:: def_kind {
327
+ let def_kind = if kind == dep_graph:: dep_kinds:: def_kind || reduce_queries {
323
328
// Try to avoid infinite recursion.
324
329
None
325
330
} else {
0 commit comments