@@ -8,15 +8,13 @@ use rustc_middle::ty::query::on_disk_cache;
88use rustc_middle:: ty:: tls:: { self , ImplicitCtxt } ;
99use rustc_middle:: ty:: { self , TyCtxt } ;
1010use rustc_query_system:: dep_graph:: HasDepContext ;
11- use rustc_query_system:: query:: { CycleError , QueryJobId } ;
12- use rustc_query_system:: query:: { QueryContext , QueryDescription , QueryMap , QueryStackFrame } ;
11+ use rustc_query_system:: query:: { QueryContext , QueryDescription , QueryJobId , QueryMap } ;
1312
1413use rustc_data_structures:: sync:: Lock ;
1514use rustc_data_structures:: thin_vec:: ThinVec ;
16- use rustc_errors:: { struct_span_err , Diagnostic , DiagnosticBuilder } ;
15+ use rustc_errors:: Diagnostic ;
1716use rustc_serialize:: opaque;
1817use rustc_span:: def_id:: { DefId , LocalDefId } ;
19- use rustc_span:: Span ;
2018
2119#[ derive( Copy , Clone ) ]
2220pub struct QueryCtxt < ' tcx > {
@@ -175,54 +173,6 @@ impl QueryContext for QueryCtxt<'tcx> {
175173}
176174
177175impl < ' tcx > QueryCtxt < ' tcx > {
178- #[ inline( never) ]
179- #[ cold]
180- pub ( super ) fn report_cycle (
181- self ,
182- CycleError { usage, cycle : stack } : CycleError ,
183- ) -> DiagnosticBuilder < ' tcx > {
184- assert ! ( !stack. is_empty( ) ) ;
185-
186- let fix_span = |span : Span , query : & QueryStackFrame | {
187- self . sess . source_map ( ) . guess_head_span ( query. default_span ( span) )
188- } ;
189-
190- // Disable naming impls with types in this path, since that
191- // sometimes cycles itself, leading to extra cycle errors.
192- // (And cycle errors around impls tend to occur during the
193- // collect/coherence phases anyhow.)
194- ty:: print:: with_forced_impl_filename_line ( || {
195- let span = fix_span ( stack[ 1 % stack. len ( ) ] . span , & stack[ 0 ] . query ) ;
196- let mut err = struct_span_err ! (
197- self . sess,
198- span,
199- E0391 ,
200- "cycle detected when {}" ,
201- stack[ 0 ] . query. description
202- ) ;
203-
204- for i in 1 ..stack. len ( ) {
205- let query = & stack[ i] . query ;
206- let span = fix_span ( stack[ ( i + 1 ) % stack. len ( ) ] . span , query) ;
207- err. span_note ( span, & format ! ( "...which requires {}..." , query. description) ) ;
208- }
209-
210- err. note ( & format ! (
211- "...which again requires {}, completing the cycle" ,
212- stack[ 0 ] . query. description
213- ) ) ;
214-
215- if let Some ( ( span, query) ) = usage {
216- err. span_note (
217- fix_span ( span, & query) ,
218- & format ! ( "cycle used when {}" , query. description) ,
219- ) ;
220- }
221-
222- err
223- } )
224- }
225-
226176 pub ( super ) fn encode_query_results (
227177 self ,
228178 encoder : & mut on_disk_cache:: CacheEncoder < ' a , ' tcx , opaque:: FileEncoder > ,
@@ -302,16 +252,16 @@ pub struct QueryStruct {
302252
303253macro_rules! handle_cycle_error {
304254 ( [ ] [ $tcx: expr, $error: expr] ) => { {
305- $tcx . report_cycle ( $ error) . emit( ) ;
255+ $error. emit( ) ;
306256 Value :: from_cycle_error( $tcx)
307257 } } ;
308258 ( [ fatal_cycle $( $rest: tt) * ] [ $tcx: expr, $error: expr] ) => { {
309- $tcx . report_cycle ( $ error) . emit( ) ;
259+ $error. emit( ) ;
310260 $tcx. sess. abort_if_errors( ) ;
311261 unreachable!( )
312262 } } ;
313263 ( [ cycle_delay_bug $( $rest: tt) * ] [ $tcx: expr, $error: expr] ) => { {
314- $tcx . report_cycle ( $ error) . delay_as_bug( ) ;
264+ $error. delay_as_bug( ) ;
315265 Value :: from_cycle_error( $tcx)
316266 } } ;
317267 ( [ $other: ident $( ( $( $other_args: tt) * ) ) * $( , $( $modifiers: tt) * ) * ] [ $( $args: tt) * ] ) => {
@@ -459,7 +409,7 @@ macro_rules! define_queries {
459409
460410 fn handle_cycle_error(
461411 tcx: QueryCtxt <' tcx>,
462- error: CycleError ,
412+ mut error: DiagnosticBuilder < ' _> ,
463413 ) -> Self :: Value {
464414 handle_cycle_error!( [ $( $modifiers) * ] [ tcx, error] )
465415 }
0 commit comments