@@ -8,15 +8,13 @@ use rustc_middle::ty::query::on_disk_cache;
8
8
use rustc_middle:: ty:: tls:: { self , ImplicitCtxt } ;
9
9
use rustc_middle:: ty:: { self , TyCtxt } ;
10
10
use 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 } ;
13
12
14
13
use rustc_data_structures:: sync:: Lock ;
15
14
use rustc_data_structures:: thin_vec:: ThinVec ;
16
- use rustc_errors:: { struct_span_err , Diagnostic , DiagnosticBuilder } ;
15
+ use rustc_errors:: Diagnostic ;
17
16
use rustc_serialize:: opaque;
18
17
use rustc_span:: def_id:: { DefId , LocalDefId } ;
19
- use rustc_span:: Span ;
20
18
21
19
#[ derive( Copy , Clone ) ]
22
20
pub struct QueryCtxt < ' tcx > {
@@ -175,54 +173,6 @@ impl QueryContext for QueryCtxt<'tcx> {
175
173
}
176
174
177
175
impl < ' 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
-
226
176
pub ( super ) fn encode_query_results (
227
177
self ,
228
178
encoder : & mut on_disk_cache:: CacheEncoder < ' a , ' tcx , opaque:: FileEncoder > ,
@@ -302,16 +252,16 @@ pub struct QueryStruct {
302
252
303
253
macro_rules! handle_cycle_error {
304
254
( [ ] [ $tcx: expr, $error: expr] ) => { {
305
- $tcx . report_cycle ( $ error) . emit( ) ;
255
+ $error. emit( ) ;
306
256
Value :: from_cycle_error( $tcx)
307
257
} } ;
308
258
( [ fatal_cycle $( $rest: tt) * ] [ $tcx: expr, $error: expr] ) => { {
309
- $tcx . report_cycle ( $ error) . emit( ) ;
259
+ $error. emit( ) ;
310
260
$tcx. sess. abort_if_errors( ) ;
311
261
unreachable!( )
312
262
} } ;
313
263
( [ cycle_delay_bug $( $rest: tt) * ] [ $tcx: expr, $error: expr] ) => { {
314
- $tcx . report_cycle ( $ error) . delay_as_bug( ) ;
264
+ $error. delay_as_bug( ) ;
315
265
Value :: from_cycle_error( $tcx)
316
266
} } ;
317
267
( [ $other: ident $( ( $( $other_args: tt) * ) ) * $( , $( $modifiers: tt) * ) * ] [ $( $args: tt) * ] ) => {
@@ -459,7 +409,7 @@ macro_rules! define_queries {
459
409
460
410
fn handle_cycle_error(
461
411
tcx: QueryCtxt <' tcx>,
462
- error: CycleError ,
412
+ mut error: DiagnosticBuilder < ' _> ,
463
413
) -> Self :: Value {
464
414
handle_cycle_error!( [ $( $modifiers) * ] [ tcx, error] )
465
415
}
0 commit comments