@@ -855,31 +855,30 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
855
855
items,
856
856
} ) => {
857
857
self . visit_attrs_vis ( & item. attrs , & item. vis ) ;
858
- self . with_in_trait_impl ( Some ( ( * constness, * polarity, t) ) , |this| {
859
- this. visibility_not_permitted (
860
- & item. vis ,
861
- errors:: VisibilityNotPermittedNote :: TraitImpl ,
862
- ) ;
863
- if let TyKind :: Dummy = self_ty. kind {
864
- // Abort immediately otherwise the `TyKind::Dummy` will reach HIR lowering,
865
- // which isn't allowed. Not a problem for this obscure, obsolete syntax.
866
- this. dcx ( ) . emit_fatal ( errors:: ObsoleteAuto { span : item. span } ) ;
867
- }
868
- if let ( & Safety :: Unsafe ( span) , & ImplPolarity :: Negative ( sp) ) = ( safety, polarity)
869
- {
870
- this. dcx ( ) . emit_err ( errors:: UnsafeNegativeImpl {
871
- span : sp. to ( t. path . span ) ,
872
- negative : sp,
873
- r#unsafe : span,
874
- } ) ;
875
- }
858
+ self . visibility_not_permitted (
859
+ & item. vis ,
860
+ errors:: VisibilityNotPermittedNote :: TraitImpl ,
861
+ ) ;
862
+ if let TyKind :: Dummy = self_ty. kind {
863
+ // Abort immediately otherwise the `TyKind::Dummy` will reach HIR lowering,
864
+ // which isn't allowed. Not a problem for this obscure, obsolete syntax.
865
+ self . dcx ( ) . emit_fatal ( errors:: ObsoleteAuto { span : item. span } ) ;
866
+ }
867
+ if let ( & Safety :: Unsafe ( span) , & ImplPolarity :: Negative ( sp) ) = ( safety, polarity) {
868
+ self . dcx ( ) . emit_err ( errors:: UnsafeNegativeImpl {
869
+ span : sp. to ( t. path . span ) ,
870
+ negative : sp,
871
+ r#unsafe : span,
872
+ } ) ;
873
+ }
876
874
877
- let disallowed = matches ! ( constness, Const :: No )
878
- . then ( || TildeConstReason :: TraitImpl { span : item. span } ) ;
879
- this . with_tilde_const ( disallowed, |this| this. visit_generics ( generics) ) ;
880
- this . visit_trait_ref ( t) ;
881
- this . visit_ty ( self_ty) ;
875
+ let disallowed = matches ! ( constness, Const :: No )
876
+ . then ( || TildeConstReason :: TraitImpl { span : item. span } ) ;
877
+ self . with_tilde_const ( disallowed, |this| this. visit_generics ( generics) ) ;
878
+ self . visit_trait_ref ( t) ;
879
+ self . visit_ty ( self_ty) ;
882
880
881
+ self . with_in_trait_impl ( Some ( ( * constness, * polarity, t) ) , |this| {
883
882
walk_list ! ( this, visit_assoc_item, items, AssocCtxt :: Impl { of_trait: true } ) ;
884
883
} ) ;
885
884
}
@@ -902,34 +901,33 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
902
901
} ;
903
902
904
903
self . visit_attrs_vis ( & item. attrs , & item. vis ) ;
905
- self . with_in_trait_impl ( None , |this| {
906
- this. visibility_not_permitted (
907
- & item. vis ,
908
- errors:: VisibilityNotPermittedNote :: IndividualImplItems ,
909
- ) ;
910
- if let & Safety :: Unsafe ( span) = safety {
911
- this. dcx ( ) . emit_err ( errors:: InherentImplCannotUnsafe {
912
- span : self_ty. span ,
913
- annotation_span : span,
914
- annotation : "unsafe" ,
915
- self_ty : self_ty. span ,
916
- } ) ;
917
- }
918
- if let & ImplPolarity :: Negative ( span) = polarity {
919
- this. dcx ( ) . emit_err ( error ( span, "negative" , false ) ) ;
920
- }
921
- if let & Defaultness :: Default ( def_span) = defaultness {
922
- this. dcx ( ) . emit_err ( error ( def_span, "`default`" , true ) ) ;
923
- }
924
- if let & Const :: Yes ( span) = constness {
925
- this. dcx ( ) . emit_err ( error ( span, "`const`" , true ) ) ;
926
- }
904
+ self . visibility_not_permitted (
905
+ & item. vis ,
906
+ errors:: VisibilityNotPermittedNote :: IndividualImplItems ,
907
+ ) ;
908
+ if let & Safety :: Unsafe ( span) = safety {
909
+ self . dcx ( ) . emit_err ( errors:: InherentImplCannotUnsafe {
910
+ span : self_ty. span ,
911
+ annotation_span : span,
912
+ annotation : "unsafe" ,
913
+ self_ty : self_ty. span ,
914
+ } ) ;
915
+ }
916
+ if let & ImplPolarity :: Negative ( span) = polarity {
917
+ self . dcx ( ) . emit_err ( error ( span, "negative" , false ) ) ;
918
+ }
919
+ if let & Defaultness :: Default ( def_span) = defaultness {
920
+ self . dcx ( ) . emit_err ( error ( def_span, "`default`" , true ) ) ;
921
+ }
922
+ if let & Const :: Yes ( span) = constness {
923
+ self . dcx ( ) . emit_err ( error ( span, "`const`" , true ) ) ;
924
+ }
927
925
928
- this. with_tilde_const (
929
- Some ( TildeConstReason :: Impl { span : item . span } ) ,
930
- |this| this . visit_generics ( generics ) ,
931
- ) ;
932
- this . visit_ty ( self_ty ) ;
926
+ self . with_tilde_const ( Some ( TildeConstReason :: Impl { span : item . span } ) , | this| {
927
+ this . visit_generics ( generics )
928
+ } ) ;
929
+ self . visit_ty ( self_ty ) ;
930
+ self . with_in_trait_impl ( None , |this| {
933
931
walk_list ! ( this, visit_assoc_item, items, AssocCtxt :: Impl { of_trait: false } ) ;
934
932
} ) ;
935
933
}
@@ -976,34 +974,34 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
976
974
self . visit_fn ( kind, item. span , item. id ) ;
977
975
}
978
976
ItemKind :: ForeignMod ( ForeignMod { extern_span, abi, safety, .. } ) => {
979
- self . with_in_extern_mod ( * safety, |this| {
980
- let old_item = mem:: replace ( & mut this. extern_mod_span , Some ( item. span ) ) ;
981
- this. visibility_not_permitted (
982
- & item. vis ,
983
- errors:: VisibilityNotPermittedNote :: IndividualForeignItems ,
984
- ) ;
985
-
986
- if & Safety :: Default == safety {
987
- if item. span . at_least_rust_2024 ( ) {
988
- this. dcx ( ) . emit_err ( errors:: MissingUnsafeOnExtern { span : item. span } ) ;
989
- } else {
990
- this. lint_buffer . buffer_lint (
991
- MISSING_UNSAFE_ON_EXTERN ,
992
- item. id ,
993
- item. span ,
994
- BuiltinLintDiag :: MissingUnsafeOnExtern {
995
- suggestion : item. span . shrink_to_lo ( ) ,
996
- } ,
997
- ) ;
998
- }
977
+ let old_item = mem:: replace ( & mut self . extern_mod_span , Some ( item. span ) ) ;
978
+ self . visibility_not_permitted (
979
+ & item. vis ,
980
+ errors:: VisibilityNotPermittedNote :: IndividualForeignItems ,
981
+ ) ;
982
+
983
+ if & Safety :: Default == safety {
984
+ if item. span . at_least_rust_2024 ( ) {
985
+ self . dcx ( ) . emit_err ( errors:: MissingUnsafeOnExtern { span : item. span } ) ;
986
+ } else {
987
+ self . lint_buffer . buffer_lint (
988
+ MISSING_UNSAFE_ON_EXTERN ,
989
+ item. id ,
990
+ item. span ,
991
+ BuiltinLintDiag :: MissingUnsafeOnExtern {
992
+ suggestion : item. span . shrink_to_lo ( ) ,
993
+ } ,
994
+ ) ;
999
995
}
996
+ }
1000
997
1001
- if abi. is_none ( ) {
1002
- this. maybe_lint_missing_abi ( * extern_span, item. id ) ;
1003
- }
998
+ if abi. is_none ( ) {
999
+ self . maybe_lint_missing_abi ( * extern_span, item. id ) ;
1000
+ }
1001
+ self . with_in_extern_mod ( * safety, |this| {
1004
1002
visit:: walk_item ( this, item) ;
1005
- this. extern_mod_span = old_item;
1006
1003
} ) ;
1004
+ self . extern_mod_span = old_item;
1007
1005
}
1008
1006
ItemKind :: Enum ( _, def, _) => {
1009
1007
for variant in & def. variants {
@@ -1024,24 +1022,23 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
1024
1022
self . visit_attrs_vis_ident ( & item. attrs , & item. vis , ident) ;
1025
1023
let is_const_trait =
1026
1024
attr:: find_by_name ( & item. attrs , sym:: const_trait) . map ( |attr| attr. span ) ;
1027
- self . with_in_trait ( item. span , is_const_trait, |this| {
1028
- if * is_auto == IsAuto :: Yes {
1029
- // Auto traits cannot have generics, super traits nor contain items.
1030
- this. deny_generic_params ( generics, ident. span ) ;
1031
- this. deny_super_traits ( bounds, ident. span ) ;
1032
- this. deny_where_clause ( & generics. where_clause , ident. span ) ;
1033
- this. deny_items ( items, ident. span ) ;
1034
- }
1025
+ if * is_auto == IsAuto :: Yes {
1026
+ // Auto traits cannot have generics, super traits nor contain items.
1027
+ self . deny_generic_params ( generics, ident. span ) ;
1028
+ self . deny_super_traits ( bounds, ident. span ) ;
1029
+ self . deny_where_clause ( & generics. where_clause , ident. span ) ;
1030
+ self . deny_items ( items, ident. span ) ;
1031
+ }
1035
1032
1036
- // Equivalent of `visit::walk_item` for `ItemKind::Trait` that inserts a bound
1037
- // context for the supertraits.
1038
- let disallowed = is_const_trait
1039
- . is_none ( )
1040
- . then ( || TildeConstReason :: Trait { span : item . span } ) ;
1041
- this. with_tilde_const ( disallowed , |this| {
1042
- this . visit_generics ( generics ) ;
1043
- walk_list ! ( this , visit_param_bound , bounds , BoundKind :: SuperTraits )
1044
- } ) ;
1033
+ // Equivalent of `visit::walk_item` for `ItemKind::Trait` that inserts a bound
1034
+ // context for the supertraits.
1035
+ let disallowed =
1036
+ is_const_trait . is_none ( ) . then ( || TildeConstReason :: Trait { span : item . span } ) ;
1037
+ self . with_tilde_const ( disallowed , |this| {
1038
+ this. visit_generics ( generics ) ;
1039
+ walk_list ! ( this , visit_param_bound , bounds , BoundKind :: SuperTraits )
1040
+ } ) ;
1041
+ self . with_in_trait ( item . span , is_const_trait , |this| {
1045
1042
walk_list ! ( this, visit_assoc_item, items, AssocCtxt :: Trait ) ;
1046
1043
} ) ;
1047
1044
}
0 commit comments