@@ -2293,9 +2293,9 @@ impl<'a> Parser<'a> {
22932293 // `pub` is added in case users got confused with the ordering like `async pub fn`,
22942294 // only if it wasn't preceded by `default` as `default pub` is invalid.
22952295 let quals: & [ Symbol ] = if check_pub {
2296- & [ kw:: Pub , kw:: Const , kw:: Async , kw:: Unsafe , kw:: Extern ]
2296+ & [ kw:: Pub , kw:: Gen , kw :: Const , kw:: Async , kw:: Unsafe , kw:: Extern ]
22972297 } else {
2298- & [ kw:: Const , kw:: Async , kw:: Unsafe , kw:: Extern ]
2298+ & [ kw:: Gen , kw :: Const , kw:: Async , kw:: Unsafe , kw:: Extern ]
22992299 } ;
23002300 self . check_keyword_case ( kw:: Fn , case) // Definitely an `fn`.
23012301 // `$qual fn` or `$qual $qual`:
@@ -2349,6 +2349,9 @@ impl<'a> Parser<'a> {
23492349 let async_start_sp = self . token . span ;
23502350 let asyncness = self . parse_asyncness ( case) ;
23512351
2352+ let _gen_start_sp = self . token . span ;
2353+ let genness = self . parse_genness ( case) ;
2354+
23522355 let unsafe_start_sp = self . token . span ;
23532356 let unsafety = self . parse_unsafety ( case) ;
23542357
@@ -2364,6 +2367,10 @@ impl<'a> Parser<'a> {
23642367 }
23652368 }
23662369
2370+ if let Gen :: Yes { span, .. } = genness {
2371+ self . sess . emit_err ( errors:: GenBlock { span } ) ;
2372+ }
2373+
23672374 if !self . eat_keyword_case ( kw:: Fn , case) {
23682375 // It is possible for `expect_one_of` to recover given the contents of
23692376 // `self.expected_tokens`, therefore, do not use `self.unexpected()` which doesn't
0 commit comments