@@ -6718,10 +6718,9 @@ impl<'a> Parser<'a> {
67186718 attrs. extend ( self . parse_inner_attributes ( ) ?) ;
67196719
67206720 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 ( ) ? ) ;
67236723 }
6724- self . expect ( & token:: CloseDelim ( token:: Brace ) ) ?;
67256724
67266725 let prev_span = self . prev_span ;
67276726 let m = ast:: ForeignMod {
@@ -7305,8 +7304,8 @@ impl<'a> Parser<'a> {
73057304 }
73067305
73077306 /// 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 ) ;
73107309
73117310 let attrs = self . parse_outer_attributes ( ) ?;
73127311 let lo = self . span ;
@@ -7326,20 +7325,20 @@ impl<'a> Parser<'a> {
73267325 ) . emit ( ) ;
73277326 }
73287327 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) ?) ;
73307329 }
73317330 // FOREIGN FUNCTION ITEM
73327331 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) ?) ;
73347333 }
73357334 // FOREIGN TYPE ITEM
73367335 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) ?) ;
73387337 }
73397338
73407339 match self . parse_assoc_macro_invoc ( "extern" , Some ( & visibility) , & mut false ) ? {
73417340 Some ( mac) => {
7342- Ok ( Some (
7341+ Ok (
73437342 ForeignItem {
73447343 ident : keywords:: Invalid . ident ( ) ,
73457344 span : lo. to ( self . prev_span ) ,
@@ -7348,14 +7347,14 @@ impl<'a> Parser<'a> {
73487347 vis : visibility,
73497348 node : ForeignItemKind :: Macro ( mac) ,
73507349 }
7351- ) )
7350+ )
73527351 }
73537352 None => {
7354- if !attrs. is_empty ( ) {
7353+ if !attrs. is_empty ( ) {
73557354 self . expected_item_err ( & attrs) ;
73567355 }
73577356
7358- Ok ( None )
7357+ self . unexpected ( )
73597358 }
73607359 }
73617360 }
0 commit comments