@@ -19,6 +19,9 @@ use std::fmt;
19
19
use std:: rc:: Rc ;
20
20
21
21
use crate :: region_infer:: values:: RegionElement ;
22
+ use crate :: session_diagnostics:: HigherRankedErrorCause ;
23
+ use crate :: session_diagnostics:: HigherRankedLifetimeError ;
24
+ use crate :: session_diagnostics:: HigherRankedSubtypeError ;
22
25
use crate :: MirBorrowckCtxt ;
23
26
24
27
#[ derive( Clone ) ]
@@ -69,7 +72,7 @@ impl<'tcx> UniverseInfo<'tcx> {
69
72
// up in the existing UI tests. Consider investigating this
70
73
// some more.
71
74
mbcx. buffer_error (
72
- mbcx. infcx . tcx . sess . struct_span_err ( cause. span , "higher-ranked subtype error" ) ,
75
+ mbcx. infcx . tcx . sess . create_err ( HigherRankedSubtypeError { span : cause. span } ) ,
73
76
) ;
74
77
}
75
78
}
@@ -216,9 +219,12 @@ impl<'tcx> TypeOpInfo<'tcx> for PredicateQuery<'tcx> {
216
219
tcx : TyCtxt < ' tcx > ,
217
220
span : Span ,
218
221
) -> DiagnosticBuilder < ' tcx , ErrorGuaranteed > {
219
- let mut err = tcx. sess . struct_span_err ( span, "higher-ranked lifetime error" ) ;
220
- err. note ( & format ! ( "could not prove {}" , self . canonical_query. value. value. predicate) ) ;
221
- err
222
+ tcx. sess . create_err ( HigherRankedLifetimeError {
223
+ cause : Some ( HigherRankedErrorCause :: CouldNotProve {
224
+ predicate : self . canonical_query . value . value . predicate . to_string ( ) ,
225
+ } ) ,
226
+ span,
227
+ } )
222
228
}
223
229
224
230
fn base_universe ( & self ) -> ty:: UniverseIndex {
@@ -263,9 +269,12 @@ where
263
269
tcx : TyCtxt < ' tcx > ,
264
270
span : Span ,
265
271
) -> DiagnosticBuilder < ' tcx , ErrorGuaranteed > {
266
- let mut err = tcx. sess . struct_span_err ( span, "higher-ranked lifetime error" ) ;
267
- err. note ( & format ! ( "could not normalize `{}`" , self . canonical_query. value. value. value) ) ;
268
- err
272
+ tcx. sess . create_err ( HigherRankedLifetimeError {
273
+ cause : Some ( HigherRankedErrorCause :: CouldNotNormalize {
274
+ value : self . canonical_query . value . value . value . to_string ( ) ,
275
+ } ) ,
276
+ span,
277
+ } )
269
278
}
270
279
271
280
fn base_universe ( & self ) -> ty:: UniverseIndex {
@@ -326,7 +335,7 @@ impl<'tcx> TypeOpInfo<'tcx> for AscribeUserTypeQuery<'tcx> {
326
335
) -> DiagnosticBuilder < ' tcx , ErrorGuaranteed > {
327
336
// FIXME: This error message isn't great, but it doesn't show up in the existing UI tests,
328
337
// and is only the fallback when the nice error fails. Consider improving this some more.
329
- tcx. sess . struct_span_err ( span , "higher-ranked lifetime error" )
338
+ tcx. sess . create_err ( HigherRankedLifetimeError { cause : None , span } )
330
339
}
331
340
332
341
fn base_universe ( & self ) -> ty:: UniverseIndex {
@@ -366,7 +375,7 @@ impl<'tcx> TypeOpInfo<'tcx> for crate::type_check::InstantiateOpaqueType<'tcx> {
366
375
) -> DiagnosticBuilder < ' tcx , ErrorGuaranteed > {
367
376
// FIXME: This error message isn't great, but it doesn't show up in the existing UI tests,
368
377
// and is only the fallback when the nice error fails. Consider improving this some more.
369
- tcx. sess . struct_span_err ( span , "higher-ranked lifetime error for opaque type!" )
378
+ tcx. sess . create_err ( HigherRankedLifetimeError { cause : None , span } )
370
379
}
371
380
372
381
fn base_universe ( & self ) -> ty:: UniverseIndex {
0 commit comments