@@ -2297,9 +2297,9 @@ impl<'a> Parser<'a> {
22972297 // `pub` is added in case users got confused with the ordering like `async pub fn`,
22982298 // only if it wasn't preceded by `default` as `default pub` is invalid.
22992299 let quals: & [ Symbol ] = if check_pub {
2300- & [ kw:: Pub , kw:: Const , kw:: Async , kw:: Unsafe , kw:: Extern ]
2300+ & [ kw:: Pub , kw:: Gen , kw :: Const , kw:: Async , kw:: Unsafe , kw:: Extern ]
23012301 } else {
2302- & [ kw:: Const , kw:: Async , kw:: Unsafe , kw:: Extern ]
2302+ & [ kw:: Gen , kw :: Const , kw:: Async , kw:: Unsafe , kw:: Extern ]
23032303 } ;
23042304 self . check_keyword_case ( kw:: Fn , case) // Definitely an `fn`.
23052305 // `$qual fn` or `$qual $qual`:
@@ -2353,6 +2353,9 @@ impl<'a> Parser<'a> {
23532353 let async_start_sp = self . token . span ;
23542354 let asyncness = self . parse_asyncness ( case) ;
23552355
2356+ let _gen_start_sp = self . token . span ;
2357+ let genness = self . parse_genness ( case) ;
2358+
23562359 let unsafe_start_sp = self . token . span ;
23572360 let unsafety = self . parse_unsafety ( case) ;
23582361
@@ -2368,6 +2371,10 @@ impl<'a> Parser<'a> {
23682371 }
23692372 }
23702373
2374+ if let Gen :: Yes { span, .. } = genness {
2375+ self . sess . emit_err ( errors:: GenBlock { span } ) ;
2376+ }
2377+
23712378 if !self . eat_keyword_case ( kw:: Fn , case) {
23722379 // It is possible for `expect_one_of` to recover given the contents of
23732380 // `self.expected_tokens`, therefore, do not use `self.unexpected()` which doesn't
0 commit comments