@@ -220,8 +220,8 @@ impl<'a> AstValidator<'a> {
220
220
}
221
221
}
222
222
223
- fn err_handler ( & self ) -> & rustc_errors:: Handler {
224
- self . session . diagnostic ( )
223
+ fn dcx ( & self ) -> & rustc_errors:: DiagCtxt {
224
+ self . session . dcx ( )
225
225
}
226
226
227
227
fn check_lifetime ( & self , ident : Ident ) {
@@ -269,7 +269,7 @@ impl<'a> AstValidator<'a> {
269
269
) {
270
270
return ;
271
271
}
272
- self . err_handler ( ) . emit_err ( errors:: InvalidUnnamedFieldTy { span, ty_span : ty. span } ) ;
272
+ self . dcx ( ) . emit_err ( errors:: InvalidUnnamedFieldTy { span, ty_span : ty. span } ) ;
273
273
}
274
274
275
275
fn deny_anon_struct_or_union ( & self , ty : & Ty ) {
@@ -278,15 +278,14 @@ impl<'a> AstValidator<'a> {
278
278
TyKind :: AnonUnion ( ..) => "union" ,
279
279
_ => return ,
280
280
} ;
281
- self . err_handler ( )
282
- . emit_err ( errors:: AnonStructOrUnionNotAllowed { struct_or_union, span : ty. span } ) ;
281
+ self . dcx ( ) . emit_err ( errors:: AnonStructOrUnionNotAllowed { struct_or_union, span : ty. span } ) ;
283
282
}
284
283
285
284
fn deny_unnamed_field ( & self , field : & FieldDef ) {
286
285
if let Some ( ident) = field. ident
287
286
&& ident. name == kw:: Underscore
288
287
{
289
- self . err_handler ( )
288
+ self . dcx ( )
290
289
. emit_err ( errors:: InvalidUnnamedField { span : field. span , ident_span : ident. span } ) ;
291
290
}
292
291
}
@@ -392,7 +391,7 @@ impl<'a> AstValidator<'a> {
392
391
[ b0] => b0. span ( ) ,
393
392
[ b0, .., bl] => b0. span ( ) . to ( bl. span ( ) ) ,
394
393
} ;
395
- self . err_handler ( ) . emit_err ( errors:: BoundInContext { span, ctx } ) ;
394
+ self . dcx ( ) . emit_err ( errors:: BoundInContext { span, ctx } ) ;
396
395
}
397
396
398
397
fn check_foreign_ty_genericless (
@@ -402,7 +401,7 @@ impl<'a> AstValidator<'a> {
402
401
after_where_clause : & TyAliasWhereClause ,
403
402
) {
404
403
let cannot_have = |span, descr, remove_descr| {
405
- self . err_handler ( ) . emit_err ( errors:: ExternTypesCannotHave {
404
+ self . dcx ( ) . emit_err ( errors:: ExternTypesCannotHave {
406
405
span,
407
406
descr,
408
407
remove_descr,
@@ -428,7 +427,7 @@ impl<'a> AstValidator<'a> {
428
427
let Some ( body) = body else {
429
428
return ;
430
429
} ;
431
- self . err_handler ( ) . emit_err ( errors:: BodyInExtern {
430
+ self . dcx ( ) . emit_err ( errors:: BodyInExtern {
432
431
span : ident. span ,
433
432
body,
434
433
block : self . current_extern_span ( ) ,
@@ -441,7 +440,7 @@ impl<'a> AstValidator<'a> {
441
440
let Some ( body) = body else {
442
441
return ;
443
442
} ;
444
- self . err_handler ( ) . emit_err ( errors:: FnBodyInExtern {
443
+ self . dcx ( ) . emit_err ( errors:: FnBodyInExtern {
445
444
span : ident. span ,
446
445
body : body. span ,
447
446
block : self . current_extern_span ( ) ,
@@ -455,7 +454,7 @@ impl<'a> AstValidator<'a> {
455
454
/// An `fn` in `extern { ... }` cannot have qualifiers, e.g. `async fn`.
456
455
fn check_foreign_fn_headerless ( & self , ident : Ident , span : Span , header : FnHeader ) {
457
456
if header. has_qualifiers ( ) {
458
- self . err_handler ( ) . emit_err ( errors:: FnQualifierInExtern {
457
+ self . dcx ( ) . emit_err ( errors:: FnQualifierInExtern {
459
458
span : ident. span ,
460
459
block : self . current_extern_span ( ) ,
461
460
sugg_span : span. until ( ident. span . shrink_to_lo ( ) ) ,
@@ -466,7 +465,7 @@ impl<'a> AstValidator<'a> {
466
465
/// An item in `extern { ... }` cannot use non-ascii identifier.
467
466
fn check_foreign_item_ascii_only ( & self , ident : Ident ) {
468
467
if !ident. as_str ( ) . is_ascii ( ) {
469
- self . err_handler ( ) . emit_err ( errors:: ExternItemAscii {
468
+ self . dcx ( ) . emit_err ( errors:: ExternItemAscii {
470
469
span : ident. span ,
471
470
block : self . current_extern_span ( ) ,
472
471
} ) ;
@@ -495,7 +494,7 @@ impl<'a> AstValidator<'a> {
495
494
if let Const :: Yes ( const_span) = header. constness {
496
495
let mut spans = variadic_spans. clone ( ) ;
497
496
spans. push ( const_span) ;
498
- self . err_handler ( ) . emit_err ( errors:: ConstAndCVariadic {
497
+ self . dcx ( ) . emit_err ( errors:: ConstAndCVariadic {
499
498
spans,
500
499
const_span,
501
500
variadic_spans : variadic_spans. clone ( ) ,
@@ -517,14 +516,14 @@ impl<'a> AstValidator<'a> {
517
516
_ => { }
518
517
} ;
519
518
520
- self . err_handler ( ) . emit_err ( errors:: BadCVariadic { span : variadic_spans } ) ;
519
+ self . dcx ( ) . emit_err ( errors:: BadCVariadic { span : variadic_spans } ) ;
521
520
}
522
521
523
522
fn check_item_named ( & self , ident : Ident , kind : & str ) {
524
523
if ident. name != kw:: Underscore {
525
524
return ;
526
525
}
527
- self . err_handler ( ) . emit_err ( errors:: ItemUnderscore { span : ident. span , kind } ) ;
526
+ self . dcx ( ) . emit_err ( errors:: ItemUnderscore { span : ident. span , kind } ) ;
528
527
}
529
528
530
529
fn check_nomangle_item_asciionly ( & self , ident : Ident , item_span : Span ) {
@@ -615,7 +614,7 @@ impl<'a> AstValidator<'a> {
615
614
let args_len = arg_spans. len ( ) ;
616
615
let constraint_len = constraint_spans. len ( ) ;
617
616
// ...and then error:
618
- self . err_handler ( ) . emit_err ( errors:: ArgsBeforeConstraint {
617
+ self . dcx ( ) . emit_err ( errors:: ArgsBeforeConstraint {
619
618
arg_spans : arg_spans. clone ( ) ,
620
619
constraints : constraint_spans[ 0 ] ,
621
620
args : * arg_spans. iter ( ) . last ( ) . unwrap ( ) ,
@@ -667,7 +666,7 @@ impl<'a> AstValidator<'a> {
667
666
}
668
667
669
668
if !bounds. iter ( ) . any ( |b| matches ! ( b, GenericBound :: Trait ( ..) ) ) {
670
- self . err_handler ( ) . emit_err ( errors:: AtLeastOneTrait { span : ty. span } ) ;
669
+ self . dcx ( ) . emit_err ( errors:: AtLeastOneTrait { span : ty. span } ) ;
671
670
}
672
671
}
673
672
_ => { }
@@ -697,7 +696,7 @@ impl<'a> AstValidator<'a> {
697
696
/// Checks that generic parameters are in the correct order,
698
697
/// which is lifetimes, then types and then consts. (`<'a, T, const N: usize>`)
699
698
fn validate_generic_param_order (
700
- handler : & rustc_errors:: Handler ,
699
+ dcx : & rustc_errors:: DiagCtxt ,
701
700
generics : & [ GenericParam ] ,
702
701
span : Span ,
703
702
) {
@@ -760,7 +759,7 @@ fn validate_generic_param_order(
760
759
ordered_params += ">" ;
761
760
762
761
for ( param_ord, ( max_param, spans) ) in & out_of_order {
763
- handler . emit_err ( errors:: OutOfOrderParams {
762
+ dcx . emit_err ( errors:: OutOfOrderParams {
764
763
spans : spans. clone ( ) ,
765
764
sugg_span : span,
766
765
param_ord,
@@ -823,7 +822,7 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
823
822
errors:: VisibilityNotPermittedNote :: TraitImpl ,
824
823
) ;
825
824
if let TyKind :: Err = self_ty. kind {
826
- this. err_handler ( ) . emit_err ( errors:: ObsoleteAuto { span : item. span } ) ;
825
+ this. dcx ( ) . emit_err ( errors:: ObsoleteAuto { span : item. span } ) ;
827
826
}
828
827
if let ( & Unsafe :: Yes ( span) , & ImplPolarity :: Negative ( sp) ) = ( unsafety, polarity)
829
828
{
@@ -871,21 +870,21 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
871
870
errors:: VisibilityNotPermittedNote :: IndividualImplItems ,
872
871
) ;
873
872
if let & Unsafe :: Yes ( span) = unsafety {
874
- self . err_handler ( ) . emit_err ( errors:: InherentImplCannotUnsafe {
873
+ self . dcx ( ) . emit_err ( errors:: InherentImplCannotUnsafe {
875
874
span : self_ty. span ,
876
875
annotation_span : span,
877
876
annotation : "unsafe" ,
878
877
self_ty : self_ty. span ,
879
878
} ) ;
880
879
}
881
880
if let & ImplPolarity :: Negative ( span) = polarity {
882
- self . err_handler ( ) . emit_err ( error ( span, "negative" , false ) ) ;
881
+ self . dcx ( ) . emit_err ( error ( span, "negative" , false ) ) ;
883
882
}
884
883
if let & Defaultness :: Default ( def_span) = defaultness {
885
- self . err_handler ( ) . emit_err ( error ( def_span, "`default`" , true ) ) ;
884
+ self . dcx ( ) . emit_err ( error ( def_span, "`default`" , true ) ) ;
886
885
}
887
886
if let & Const :: Yes ( span) = constness {
888
- self . err_handler ( ) . emit_err ( error ( span, "`const`" , true ) ) ;
887
+ self . dcx ( ) . emit_err ( error ( span, "`const`" , true ) ) ;
889
888
}
890
889
891
890
self . visit_vis ( & item. vis ) ;
@@ -937,7 +936,7 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
937
936
errors:: VisibilityNotPermittedNote :: IndividualForeignItems ,
938
937
) ;
939
938
if let & Unsafe :: Yes ( span) = unsafety {
940
- self . err_handler ( ) . emit_err ( errors:: UnsafeItem { span, kind : "extern block" } ) ;
939
+ self . dcx ( ) . emit_err ( errors:: UnsafeItem { span, kind : "extern block" } ) ;
941
940
}
942
941
if abi. is_none ( ) {
943
942
self . maybe_lint_missing_abi ( item. span , item. id ) ;
@@ -988,7 +987,7 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
988
987
}
989
988
ItemKind :: Mod ( unsafety, mod_kind) => {
990
989
if let & Unsafe :: Yes ( span) = unsafety {
991
- self . err_handler ( ) . emit_err ( errors:: UnsafeItem { span, kind : "module" } ) ;
990
+ self . dcx ( ) . emit_err ( errors:: UnsafeItem { span, kind : "module" } ) ;
992
991
}
993
992
// Ensure that `path` attributes on modules are recorded as used (cf. issue #35584).
994
993
if !matches ! ( mod_kind, ModKind :: Loaded ( _, Inline :: Yes , _) )
@@ -1011,7 +1010,7 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
1011
1010
} ,
1012
1011
ItemKind :: Union ( vdata, generics) => {
1013
1012
if vdata. fields ( ) . is_empty ( ) {
1014
- self . err_handler ( ) . emit_err ( errors:: FieldlessUnion { span : item. span } ) ;
1013
+ self . dcx ( ) . emit_err ( errors:: FieldlessUnion { span : item. span } ) ;
1015
1014
}
1016
1015
match vdata {
1017
1016
VariantData :: Struct ( fields, ..) => {
@@ -1053,10 +1052,10 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
1053
1052
1054
1053
if self . features . lazy_type_alias {
1055
1054
if let Err ( err) = self . check_type_alias_where_clause_location ( ty_alias) {
1056
- self . err_handler ( ) . emit_err ( err) ;
1055
+ self . dcx ( ) . emit_err ( err) ;
1057
1056
}
1058
1057
} else if where_clauses. 1 . 0 {
1059
- self . err_handler ( ) . emit_err ( errors:: WhereClauseAfterTypeAlias {
1058
+ self . dcx ( ) . emit_err ( errors:: WhereClauseAfterTypeAlias {
1060
1059
span : where_clauses. 1 . 1 ,
1061
1060
help : self . session . is_nightly_build ( ) . then_some ( ( ) ) ,
1062
1061
} ) ;
@@ -1141,14 +1140,14 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
1141
1140
}
1142
1141
GenericParamKind :: Type { .. } | GenericParamKind :: Const { .. } => {
1143
1142
if let Some ( span) = prev_param_default {
1144
- self . err_handler ( ) . emit_err ( errors:: GenericDefaultTrailing { span } ) ;
1143
+ self . dcx ( ) . emit_err ( errors:: GenericDefaultTrailing { span } ) ;
1145
1144
break ;
1146
1145
}
1147
1146
}
1148
1147
}
1149
1148
}
1150
1149
1151
- validate_generic_param_order ( self . err_handler ( ) , & generics. params , generics. span ) ;
1150
+ validate_generic_param_order ( self . dcx ( ) , & generics. params , generics. span ) ;
1152
1151
1153
1152
for predicate in & generics. where_clause . predicates {
1154
1153
if let WherePredicate :: EqPredicate ( predicate) = predicate {
@@ -1169,7 +1168,7 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
1169
1168
match bound {
1170
1169
GenericBound :: Trait ( t, _) => {
1171
1170
if !t. bound_generic_params . is_empty ( ) {
1172
- self . err_handler ( )
1171
+ self . dcx ( )
1173
1172
. emit_err ( errors:: NestedLifetimes { span : t. span } ) ;
1174
1173
}
1175
1174
}
@@ -1195,13 +1194,13 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
1195
1194
if let GenericBound :: Trait ( poly, modify) = bound {
1196
1195
match ( ctxt, modify) {
1197
1196
( BoundKind :: SuperTraits , TraitBoundModifier :: Maybe ) => {
1198
- self . err_handler ( ) . emit_err ( errors:: OptionalTraitSupertrait {
1197
+ self . dcx ( ) . emit_err ( errors:: OptionalTraitSupertrait {
1199
1198
span : poly. span ,
1200
1199
path_str : pprust:: path_to_string ( & poly. trait_ref . path ) ,
1201
1200
} ) ;
1202
1201
}
1203
1202
( BoundKind :: TraitObject , TraitBoundModifier :: Maybe ) => {
1204
- self . err_handler ( ) . emit_err ( errors:: OptionalTraitObject { span : poly. span } ) ;
1203
+ self . dcx ( ) . emit_err ( errors:: OptionalTraitObject { span : poly. span } ) ;
1205
1204
}
1206
1205
( _, & TraitBoundModifier :: MaybeConst ( span) )
1207
1206
if let Some ( reason) = & self . disallow_tilde_const =>
@@ -1224,16 +1223,16 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
1224
1223
}
1225
1224
DisallowTildeConstContext :: Item => errors:: TildeConstReason :: Item ,
1226
1225
} ;
1227
- self . err_handler ( ) . emit_err ( errors:: TildeConstDisallowed { span, reason } ) ;
1226
+ self . dcx ( ) . emit_err ( errors:: TildeConstDisallowed { span, reason } ) ;
1228
1227
}
1229
1228
( _, TraitBoundModifier :: MaybeConstMaybe ) => {
1230
- self . err_handler ( ) . emit_err ( errors:: OptionalConstExclusive {
1229
+ self . dcx ( ) . emit_err ( errors:: OptionalConstExclusive {
1231
1230
span : bound. span ( ) ,
1232
1231
modifier : "?" ,
1233
1232
} ) ;
1234
1233
}
1235
1234
( _, TraitBoundModifier :: MaybeConstNegative ) => {
1236
- self . err_handler ( ) . emit_err ( errors:: OptionalConstExclusive {
1235
+ self . dcx ( ) . emit_err ( errors:: OptionalConstExclusive {
1237
1236
span : bound. span ( ) ,
1238
1237
modifier : "!" ,
1239
1238
} ) ;
@@ -1249,7 +1248,7 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
1249
1248
{
1250
1249
for arg in & args. args {
1251
1250
if let ast:: AngleBracketedArg :: Constraint ( constraint) = arg {
1252
- self . err_handler ( )
1251
+ self . dcx ( )
1253
1252
. emit_err ( errors:: ConstraintOnNegativeBound { span : constraint. span } ) ;
1254
1253
}
1255
1254
}
@@ -1281,7 +1280,7 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
1281
1280
| CoroutineKind :: AsyncGen { span : aspan, .. } => aspan,
1282
1281
} ;
1283
1282
// FIXME(gen_blocks): Report a different error for `const gen`
1284
- self . err_handler ( ) . emit_err ( errors:: ConstAndAsync {
1283
+ self . dcx ( ) . emit_err ( errors:: ConstAndAsync {
1285
1284
spans : vec ! [ cspan, aspan] ,
1286
1285
cspan,
1287
1286
aspan,
@@ -1321,10 +1320,8 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
1321
1320
}
1322
1321
} else {
1323
1322
match ctxt {
1324
- FnCtxt :: Foreign => {
1325
- self . err_handler ( ) . emit_err ( errors:: PatternInForeign { span } )
1326
- }
1327
- _ => self . err_handler ( ) . emit_err ( errors:: PatternInBodiless { span } ) ,
1323
+ FnCtxt :: Foreign => self . dcx ( ) . emit_err ( errors:: PatternInForeign { span } ) ,
1324
+ _ => self . dcx ( ) . emit_err ( errors:: PatternInBodiless { span } ) ,
1328
1325
} ;
1329
1326
}
1330
1327
} ) ;
@@ -1523,7 +1520,7 @@ fn deny_equality_constraints(
1523
1520
}
1524
1521
}
1525
1522
}
1526
- this. err_handler ( ) . emit_err ( err) ;
1523
+ this. dcx ( ) . emit_err ( err) ;
1527
1524
}
1528
1525
1529
1526
pub fn check_crate (
0 commit comments