@@ -6718,10 +6718,9 @@ impl<'a> Parser<'a> {
6718
6718
attrs. extend ( self . parse_inner_attributes ( ) ?) ;
6719
6719
6720
6720
let mut foreign_items = vec ! [ ] ;
6721
- while let Some ( item ) = self . parse_foreign_item ( ) ? {
6722
- foreign_items. push ( item ) ;
6721
+ while ! self . eat ( & token :: CloseDelim ( token :: Brace ) ) {
6722
+ foreign_items. push ( self . parse_foreign_item ( ) ? ) ;
6723
6723
}
6724
- self . expect ( & token:: CloseDelim ( token:: Brace ) ) ?;
6725
6724
6726
6725
let prev_span = self . prev_span ;
6727
6726
let m = ast:: ForeignMod {
@@ -7305,8 +7304,8 @@ impl<'a> Parser<'a> {
7305
7304
}
7306
7305
7307
7306
/// Parse a foreign item.
7308
- crate fn parse_foreign_item ( & mut self ) -> PResult < ' a , Option < ForeignItem > > {
7309
- maybe_whole ! ( self , NtForeignItem , |ni| Some ( ni ) ) ;
7307
+ crate fn parse_foreign_item ( & mut self ) -> PResult < ' a , ForeignItem > {
7308
+ maybe_whole ! ( self , NtForeignItem , |ni| ni ) ;
7310
7309
7311
7310
let attrs = self . parse_outer_attributes ( ) ?;
7312
7311
let lo = self . span ;
@@ -7326,20 +7325,20 @@ impl<'a> Parser<'a> {
7326
7325
) . emit ( ) ;
7327
7326
}
7328
7327
self . bump ( ) ; // `static` or `const`
7329
- return Ok ( Some ( self . parse_item_foreign_static ( visibility, lo, attrs) ?) ) ;
7328
+ return Ok ( self . parse_item_foreign_static ( visibility, lo, attrs) ?) ;
7330
7329
}
7331
7330
// FOREIGN FUNCTION ITEM
7332
7331
if self . check_keyword ( keywords:: Fn ) {
7333
- return Ok ( Some ( self . parse_item_foreign_fn ( visibility, lo, attrs) ?) ) ;
7332
+ return Ok ( self . parse_item_foreign_fn ( visibility, lo, attrs) ?) ;
7334
7333
}
7335
7334
// FOREIGN TYPE ITEM
7336
7335
if self . check_keyword ( keywords:: Type ) {
7337
- return Ok ( Some ( self . parse_item_foreign_type ( visibility, lo, attrs) ?) ) ;
7336
+ return Ok ( self . parse_item_foreign_type ( visibility, lo, attrs) ?) ;
7338
7337
}
7339
7338
7340
7339
match self . parse_assoc_macro_invoc ( "extern" , Some ( & visibility) , & mut false ) ? {
7341
7340
Some ( mac) => {
7342
- Ok ( Some (
7341
+ Ok (
7343
7342
ForeignItem {
7344
7343
ident : keywords:: Invalid . ident ( ) ,
7345
7344
span : lo. to ( self . prev_span ) ,
@@ -7348,14 +7347,14 @@ impl<'a> Parser<'a> {
7348
7347
vis : visibility,
7349
7348
node : ForeignItemKind :: Macro ( mac) ,
7350
7349
}
7351
- ) )
7350
+ )
7352
7351
}
7353
7352
None => {
7354
- if !attrs. is_empty ( ) {
7353
+ if !attrs. is_empty ( ) {
7355
7354
self . expected_item_err ( & attrs) ;
7356
7355
}
7357
7356
7358
- Ok ( None )
7357
+ self . unexpected ( )
7359
7358
}
7360
7359
}
7361
7360
}
0 commit comments