@@ -1100,30 +1100,37 @@ impl<'a> Parser<'a> {
1100
1100
snapshot. bump ( ) ; // `(`
1101
1101
match snapshot. parse_struct_fields ( path, false , token:: Paren ) {
1102
1102
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
1104
1104
// `Enum::Foo { a: 3, b: 4 }` or `Enum::Foo(3, 4)`.
1105
1105
* self = snapshot;
1106
1106
let close_paren = self . prev_token . span ;
1107
1107
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
+ }
1127
1134
return Some ( self . mk_expr_err ( span) ) ;
1128
1135
}
1129
1136
Ok ( _) => { }
0 commit comments