@@ -64,7 +64,7 @@ thread_local! {
6464 static SHOULD_PREFIX_WITH_CRATE : Cell <bool > = const { Cell :: new( false ) } ;
6565 static NO_TRIMMED_PATH : Cell <bool > = const { Cell :: new( false ) } ;
6666 static FORCE_TRIMMED_PATH : Cell <bool > = const { Cell :: new( false ) } ;
67- static NO_QUERIES : Cell <bool > = const { Cell :: new( false ) } ;
67+ static REDUCED_QUERIES : Cell <bool > = const { Cell :: new( false ) } ;
6868 static NO_VISIBLE_PATH : Cell <bool > = const { Cell :: new( false ) } ;
6969}
7070
@@ -102,14 +102,14 @@ macro_rules! define_helper {
102102}
103103
104104define_helper ! (
105- /// Avoids running any queries during any prints that occur
105+ /// Avoids running select queries during any prints that occur
106106 /// during the closure. This may alter the appearance of some
107107 /// types (e.g. forcing verbose printing for opaque types).
108108 /// This method is used during some queries (e.g. `explicit_item_bounds`
109109 /// for opaque types), to ensure that any debug printing that
110110 /// occurs during the query computation does not end up recursively
111111 /// calling the same query.
112- fn with_no_queries ( NoQueriesGuard , NO_QUERIES ) ;
112+ fn with_reduced_queries ( ReducedQueriesGuard , REDUCED_QUERIES ) ;
113113 /// Force us to name impls with just the filename/line number. We
114114 /// normally try to use types. But at some points, notably while printing
115115 /// cycle errors, this can result in extra or suboptimal error output,
@@ -127,6 +127,15 @@ define_helper!(
127127 fn with_no_visible_paths( NoVisibleGuard , NO_VISIBLE_PATH ) ;
128128) ;
129129
130+ /// Avoids running any queries during prints.
131+ pub macro with_no_queries ( $e: expr) { {
132+ $crate:: ty:: print:: with_reduced_queries!( $crate :: ty:: print:: with_forced_impl_filename_line!(
133+ $crate :: ty:: print:: with_no_trimmed_paths!( $crate :: ty:: print:: with_no_visible_paths!(
134+ $crate :: ty:: print:: with_forced_impl_filename_line!( $e)
135+ ) )
136+ ) )
137+ } }
138+
130139/// The "region highlights" are used to control region printing during
131140 /// specific error messages. When a "region highlight" is enabled, it
132141/// gives an alternate way to print specific regions. For now, we
@@ -659,7 +668,7 @@ pub trait PrettyPrinter<'tcx>: Printer<'tcx> + fmt::Write {
659668 p ! ( ")" )
660669 }
661670 ty:: FnDef ( def_id, args) => {
662- if with_no_queries ( ) {
671+ if with_reduced_queries ( ) {
663672 p ! ( print_def_path( def_id, args) ) ;
664673 } else {
665674 let sig = self . tcx ( ) . fn_sig ( def_id) . instantiate ( self . tcx ( ) , args) ;
@@ -759,7 +768,7 @@ pub trait PrettyPrinter<'tcx>: Printer<'tcx> + fmt::Write {
759768 return Ok ( ( ) ) ;
760769 }
761770 _ => {
762- if with_no_queries ( ) {
771+ if with_reduced_queries ( ) {
763772 p ! ( print_def_path( def_id, & [ ] ) ) ;
764773 return Ok ( ( ) ) ;
765774 } else {
@@ -1876,7 +1885,8 @@ impl DerefMut for FmtPrinter<'_, '_> {
18761885
18771886impl < ' a , ' tcx > FmtPrinter < ' a , ' tcx > {
18781887 pub fn new ( tcx : TyCtxt < ' tcx > , ns : Namespace ) -> Self {
1879- let limit = if with_no_queries ( ) { Limit :: new ( 1048576 ) } else { tcx. type_length_limit ( ) } ;
1888+ let limit =
1889+ if with_reduced_queries ( ) { Limit :: new ( 1048576 ) } else { tcx. type_length_limit ( ) } ;
18801890 Self :: new_with_limit ( tcx, ns, limit)
18811891 }
18821892
@@ -2962,7 +2972,7 @@ define_print_and_forward_display! {
29622972 }
29632973
29642974 TraitRefPrintSugared <' tcx> {
2965- if !with_no_queries ( )
2975+ if !with_reduced_queries ( )
29662976 && let Some ( kind) = cx. tcx( ) . fn_trait_kind_from_def_id( self . 0 . def_id)
29672977 && let ty:: Tuple ( args) = self . 0 . args. type_at( 1 ) . kind( )
29682978 {
@@ -3050,7 +3060,7 @@ define_print_and_forward_display! {
30503060 // If we're printing verbosely, or don't want to invoke queries
30513061 // (`is_impl_trait_in_trait`), then fall back to printing the def path.
30523062 // This is likely what you want if you're debugging the compiler anyways.
3053- if !( cx. should_print_verbose( ) || with_no_queries ( ) )
3063+ if !( cx. should_print_verbose( ) || with_reduced_queries ( ) )
30543064 && cx. tcx( ) . is_impl_trait_in_trait( self . def_id)
30553065 {
30563066 return cx. pretty_print_opaque_impl_type( self . def_id, self . args) ;
0 commit comments