@@ -222,7 +222,8 @@ impl<'a> Parser<'a> {
222222 self . parse_use_item ( ) ?
223223 } else if self . check_fn_front_matter ( def_final, case) {
224224 // FUNCTION ITEM
225- let ( ident, sig, generics, body) = self . parse_fn ( attrs, fn_parse_mode, lo, vis) ?;
225+ let ( ident, sig, generics, body) =
226+ self . parse_fn ( attrs, fn_parse_mode, lo, vis, case) ?;
226227 ( ident, ItemKind :: Fn ( Box :: new ( Fn { defaultness : def_ ( ) , sig, generics, body } ) ) )
227228 } else if self . eat_keyword ( kw:: Extern ) {
228229 if self . eat_keyword ( kw:: Crate ) {
@@ -1792,7 +1793,13 @@ impl<'a> Parser<'a> {
17921793 } ;
17931794 // We use `parse_fn` to get a span for the function
17941795 let fn_parse_mode = FnParseMode { req_name : |_| true , req_body : true } ;
1795- match self . parse_fn ( & mut AttrVec :: new ( ) , fn_parse_mode, lo, & inherited_vis) {
1796+ match self . parse_fn (
1797+ & mut AttrVec :: new ( ) ,
1798+ fn_parse_mode,
1799+ lo,
1800+ & inherited_vis,
1801+ Case :: Insensitive ,
1802+ ) {
17961803 Ok ( _) => {
17971804 let mut err = self . struct_span_err (
17981805 lo. to ( self . prev_token . span ) ,
@@ -2116,8 +2123,9 @@ impl<'a> Parser<'a> {
21162123 fn_parse_mode : FnParseMode ,
21172124 sig_lo : Span ,
21182125 vis : & Visibility ,
2126+ case : Case ,
21192127 ) -> PResult < ' a , ( Ident , FnSig , Generics , Option < P < Block > > ) > {
2120- let header = self . parse_fn_front_matter ( vis) ?; // `const ... fn`
2128+ let header = self . parse_fn_front_matter ( vis, case ) ?; // `const ... fn`
21212129 let ident = self . parse_ident ( ) ?; // `foo`
21222130 let mut generics = self . parse_generics ( ) ?; // `<'a, T, ...>`
21232131 let decl =
@@ -2241,24 +2249,28 @@ impl<'a> Parser<'a> {
22412249 ///
22422250 /// `vis` represents the visibility that was already parsed, if any. Use
22432251 /// `Visibility::Inherited` when no visibility is known.
2244- pub ( super ) fn parse_fn_front_matter ( & mut self , orig_vis : & Visibility ) -> PResult < ' a , FnHeader > {
2252+ pub ( super ) fn parse_fn_front_matter (
2253+ & mut self ,
2254+ orig_vis : & Visibility ,
2255+ case : Case ,
2256+ ) -> PResult < ' a , FnHeader > {
22452257 let sp_start = self . token . span ;
2246- let constness = self . parse_constness ( Case :: Insensitive ) ;
2258+ let constness = self . parse_constness ( case ) ;
22472259
22482260 let async_start_sp = self . token . span ;
2249- let asyncness = self . parse_asyncness ( Case :: Insensitive ) ;
2261+ let asyncness = self . parse_asyncness ( case ) ;
22502262
22512263 let unsafe_start_sp = self . token . span ;
2252- let unsafety = self . parse_unsafety ( Case :: Insensitive ) ;
2264+ let unsafety = self . parse_unsafety ( case ) ;
22532265
22542266 let ext_start_sp = self . token . span ;
2255- let ext = self . parse_extern ( Case :: Insensitive ) ;
2267+ let ext = self . parse_extern ( case ) ;
22562268
22572269 if let Async :: Yes { span, .. } = asyncness {
22582270 self . ban_async_in_2015 ( span) ;
22592271 }
22602272
2261- if !self . eat_keyword_case ( kw:: Fn , Case :: Insensitive ) {
2273+ if !self . eat_keyword_case ( kw:: Fn , case ) {
22622274 // It is possible for `expect_one_of` to recover given the contents of
22632275 // `self.expected_tokens`, therefore, do not use `self.unexpected()` which doesn't
22642276 // account for this.
0 commit comments