@@ -122,12 +122,13 @@ impl<'a> Parser<'a> {
122
122
if self . eat_keyword ( kw:: Fn ) {
123
123
// EXTERN FUNCTION ITEM
124
124
let fn_span = self . prev_span ;
125
- return self . parse_item_fn ( lo , visibility , attrs , FnHeader {
125
+ let header = FnHeader {
126
126
unsafety : Unsafety :: Normal ,
127
127
asyncness : respan ( fn_span, IsAsync :: NotAsync ) ,
128
128
constness : respan ( fn_span, Constness :: NotConst ) ,
129
129
abi : opt_abi. unwrap_or ( Abi :: C ) ,
130
- } ) ;
130
+ } ;
131
+ return self . parse_item_fn ( lo, visibility, attrs, header) ;
131
132
} else if self . check ( & token:: OpenDelim ( token:: Brace ) ) {
132
133
return Ok ( Some (
133
134
self . parse_item_foreign_mod ( lo, opt_abi, visibility, attrs, extern_sp) ?,
@@ -154,12 +155,13 @@ impl<'a> Parser<'a> {
154
155
// CONST FUNCTION ITEM
155
156
let unsafety = self . parse_unsafety ( ) ;
156
157
self . bump ( ) ;
157
- return self . parse_item_fn ( lo , visibility , attrs , FnHeader {
158
+ let header = FnHeader {
158
159
unsafety,
159
160
asyncness : respan ( const_span, IsAsync :: NotAsync ) ,
160
161
constness : respan ( const_span, Constness :: Const ) ,
161
162
abi : Abi :: Rust ,
162
- } ) ;
163
+ } ;
164
+ return self . parse_item_fn ( lo, visibility, attrs, header) ;
163
165
}
164
166
165
167
// CONST ITEM
@@ -196,14 +198,14 @@ impl<'a> Parser<'a> {
196
198
closure_id : DUMMY_NODE_ID ,
197
199
return_impl_trait_id : DUMMY_NODE_ID ,
198
200
} ) ;
199
- let item = self . parse_item_fn ( lo, visibility, attrs, FnHeader {
201
+ self . ban_async_in_2015 ( async_span) ;
202
+ let header = FnHeader {
200
203
unsafety,
201
204
asyncness,
202
205
constness : respan ( fn_span, Constness :: NotConst ) ,
203
206
abi : Abi :: Rust ,
204
- } ) ?;
205
- self . ban_async_in_2015 ( async_span) ;
206
- return Ok ( item) ;
207
+ } ;
208
+ return self . parse_item_fn ( lo, visibility, attrs, header) ;
207
209
}
208
210
}
209
211
if self . check_keyword ( kw:: Unsafe ) &&
@@ -241,12 +243,13 @@ impl<'a> Parser<'a> {
241
243
// FUNCTION ITEM
242
244
self . bump ( ) ;
243
245
let fn_span = self . prev_span ;
244
- return self . parse_item_fn ( lo , visibility , attrs , FnHeader {
246
+ let header = FnHeader {
245
247
unsafety : Unsafety :: Normal ,
246
248
asyncness : respan ( fn_span, IsAsync :: NotAsync ) ,
247
249
constness : respan ( fn_span, Constness :: NotConst ) ,
248
250
abi : Abi :: Rust ,
249
- } ) ;
251
+ } ;
252
+ return self . parse_item_fn ( lo, visibility, attrs, header) ;
250
253
}
251
254
if self . check_keyword ( kw:: Unsafe )
252
255
&& self . look_ahead ( 1 , |t| * t != token:: OpenDelim ( token:: Brace ) ) {
@@ -261,12 +264,13 @@ impl<'a> Parser<'a> {
261
264
} ;
262
265
self . expect_keyword ( kw:: Fn ) ?;
263
266
let fn_span = self . prev_span ;
264
- return self . parse_item_fn ( lo , visibility , attrs , FnHeader {
267
+ let header = FnHeader {
265
268
unsafety : Unsafety :: Unsafe ,
266
269
asyncness : respan ( fn_span, IsAsync :: NotAsync ) ,
267
270
constness : respan ( fn_span, Constness :: NotConst ) ,
268
271
abi,
269
- } ) ;
272
+ } ;
273
+ return self . parse_item_fn ( lo, visibility, attrs, header) ;
270
274
}
271
275
if self . eat_keyword ( kw:: Mod ) {
272
276
// MODULE ITEM
0 commit comments