@@ -696,36 +696,38 @@ impl<'a> AstValidator<'a> {
696
696
697
697
match fn_ctxt {
698
698
FnCtxt :: Foreign => return ,
699
- FnCtxt :: Free => match sig. header . ext {
700
- Extern :: Implicit ( _) => {
701
- if !matches ! ( sig. header. safety, Safety :: Unsafe ( _) ) {
702
- self . dcx ( ) . emit_err ( errors:: CVariadicMustBeUnsafe {
703
- span : variadic_param. span ,
704
- unsafe_span : sig. safety_span ( ) ,
705
- } ) ;
706
- }
707
- }
708
- Extern :: Explicit ( StrLit { symbol_unescaped, .. } , _) => {
709
- if !matches ! ( symbol_unescaped, sym:: C | sym:: C_dash_unwind ) {
710
- self . dcx ( ) . emit_err ( errors:: CVariadicBadExtern {
711
- span : variadic_param. span ,
712
- abi : symbol_unescaped,
713
- extern_span : sig. extern_span ( ) ,
714
- } ) ;
699
+ FnCtxt :: Free | FnCtxt :: Assoc ( AssocCtxt :: Impl { of_trait : false } ) => {
700
+ match sig. header . ext {
701
+ Extern :: Implicit ( _) => {
702
+ if !matches ! ( sig. header. safety, Safety :: Unsafe ( _) ) {
703
+ self . dcx ( ) . emit_err ( errors:: CVariadicMustBeUnsafe {
704
+ span : variadic_param. span ,
705
+ unsafe_span : sig. safety_span ( ) ,
706
+ } ) ;
707
+ }
715
708
}
709
+ Extern :: Explicit ( StrLit { symbol_unescaped, .. } , _) => {
710
+ if !matches ! ( symbol_unescaped, sym:: C | sym:: C_dash_unwind ) {
711
+ self . dcx ( ) . emit_err ( errors:: CVariadicBadExtern {
712
+ span : variadic_param. span ,
713
+ abi : symbol_unescaped,
714
+ extern_span : sig. extern_span ( ) ,
715
+ } ) ;
716
+ }
716
717
717
- if !matches ! ( sig. header. safety, Safety :: Unsafe ( _) ) {
718
- self . dcx ( ) . emit_err ( errors:: CVariadicMustBeUnsafe {
719
- span : variadic_param. span ,
720
- unsafe_span : sig. safety_span ( ) ,
721
- } ) ;
718
+ if !matches ! ( sig. header. safety, Safety :: Unsafe ( _) ) {
719
+ self . dcx ( ) . emit_err ( errors:: CVariadicMustBeUnsafe {
720
+ span : variadic_param. span ,
721
+ unsafe_span : sig. safety_span ( ) ,
722
+ } ) ;
723
+ }
724
+ }
725
+ Extern :: None => {
726
+ let err = errors:: CVariadicNoExtern { span : variadic_param. span } ;
727
+ self . dcx ( ) . emit_err ( err) ;
722
728
}
723
729
}
724
- Extern :: None => {
725
- let err = errors:: CVariadicNoExtern { span : variadic_param. span } ;
726
- self . dcx ( ) . emit_err ( err) ;
727
- }
728
- } ,
730
+ }
729
731
FnCtxt :: Assoc ( _) => {
730
732
// For now, C variable argument lists are unsupported in associated functions.
731
733
let err = errors:: CVariadicAssociatedFunction { span : variadic_param. span } ;
0 commit comments