@@ -1100,30 +1100,37 @@ impl<'a> Parser<'a> {
11001100 snapshot. bump ( ) ; // `(`
11011101 match snapshot. parse_struct_fields ( path, false , token:: Paren ) {
11021102 Ok ( ( fields, ..) ) if snapshot. eat ( & token:: CloseDelim ( token:: Paren ) ) => {
1103- // We have are certain we have `Enum::Foo(a: 3, b: 4)`, suggest
1103+ // We are certain we have `Enum::Foo(a: 3, b: 4)`, suggest
11041104 // `Enum::Foo { a: 3, b: 4 }` or `Enum::Foo(3, 4)`.
11051105 * self = snapshot;
11061106 let close_paren = self . prev_token . span ;
11071107 let span = lo. to ( self . prev_token . span ) ;
1108- err. cancel ( ) ;
1109- self . struct_span_err (
1110- span,
1111- "invalid `struct` delimiters or `fn` call arguments" ,
1112- )
1113- . multipart_suggestion (
1114- & format ! ( "if `{}` is a struct, use braces as delimiters" , name) ,
1115- vec ! [ ( open_paren, " { " . to_string( ) ) , ( close_paren, " }" . to_string( ) ) ] ,
1116- Applicability :: MaybeIncorrect ,
1117- )
1118- . multipart_suggestion (
1119- & format ! ( "if `{}` is a function, use the arguments directly" , name) ,
1120- fields
1121- . into_iter ( )
1122- . map ( |field| ( field. span . until ( field. expr . span ) , String :: new ( ) ) )
1123- . collect ( ) ,
1124- Applicability :: MaybeIncorrect ,
1125- )
1126- . emit ( ) ;
1108+ if !fields. is_empty ( ) {
1109+ err. cancel ( ) ;
1110+ let mut err = self . struct_span_err (
1111+ span,
1112+ "invalid `struct` delimiters or `fn` call arguments" ,
1113+ ) ;
1114+ err. multipart_suggestion (
1115+ & format ! ( "if `{}` is a struct, use braces as delimiters" , name) ,
1116+ vec ! [
1117+ ( open_paren, " { " . to_string( ) ) ,
1118+ ( close_paren, " }" . to_string( ) ) ,
1119+ ] ,
1120+ Applicability :: MaybeIncorrect ,
1121+ ) ;
1122+ err. multipart_suggestion (
1123+ & format ! ( "if `{}` is a function, use the arguments directly" , name) ,
1124+ fields
1125+ . into_iter ( )
1126+ . map ( |field| ( field. span . until ( field. expr . span ) , String :: new ( ) ) )
1127+ . collect ( ) ,
1128+ Applicability :: MaybeIncorrect ,
1129+ ) ;
1130+ err. emit ( ) ;
1131+ } else {
1132+ err. emit ( ) ;
1133+ }
11271134 return Some ( self . mk_expr_err ( span) ) ;
11281135 }
11291136 Ok ( _) => { }
0 commit comments