@@ -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 ) {
@@ -1793,7 +1794,13 @@ impl<'a> Parser<'a> {
17931794 } ;
17941795 // We use `parse_fn` to get a span for the function
17951796 let fn_parse_mode = FnParseMode { req_name : |_| true , req_body : true } ;
1796- match self . parse_fn ( & mut AttrVec :: new ( ) , fn_parse_mode, lo, & inherited_vis) {
1797+ match self . parse_fn (
1798+ & mut AttrVec :: new ( ) ,
1799+ fn_parse_mode,
1800+ lo,
1801+ & inherited_vis,
1802+ Case :: Insensitive ,
1803+ ) {
17971804 Ok ( _) => {
17981805 let mut err = self . struct_span_err (
17991806 lo. to ( self . prev_token . span ) ,
@@ -2114,8 +2121,9 @@ impl<'a> Parser<'a> {
21142121 fn_parse_mode : FnParseMode ,
21152122 sig_lo : Span ,
21162123 vis : & Visibility ,
2124+ case : Case ,
21172125 ) -> PResult < ' a , ( Ident , FnSig , Generics , Option < P < Block > > ) > {
2118- let header = self . parse_fn_front_matter ( vis) ?; // `const ... fn`
2126+ let header = self . parse_fn_front_matter ( vis, case ) ?; // `const ... fn`
21192127 let ident = self . parse_ident ( ) ?; // `foo`
21202128 let mut generics = self . parse_generics ( ) ?; // `<'a, T, ...>`
21212129 let decl =
@@ -2239,24 +2247,28 @@ impl<'a> Parser<'a> {
22392247 ///
22402248 /// `vis` represents the visibility that was already parsed, if any. Use
22412249 /// `Visibility::Inherited` when no visibility is known.
2242- pub ( super ) fn parse_fn_front_matter ( & mut self , orig_vis : & Visibility ) -> PResult < ' a , FnHeader > {
2250+ pub ( super ) fn parse_fn_front_matter (
2251+ & mut self ,
2252+ orig_vis : & Visibility ,
2253+ case : Case ,
2254+ ) -> PResult < ' a , FnHeader > {
22432255 let sp_start = self . token . span ;
2244- let constness = self . parse_constness ( Case :: Insensitive ) ;
2256+ let constness = self . parse_constness ( case ) ;
22452257
22462258 let async_start_sp = self . token . span ;
2247- let asyncness = self . parse_asyncness ( Case :: Insensitive ) ;
2259+ let asyncness = self . parse_asyncness ( case ) ;
22482260
22492261 let unsafe_start_sp = self . token . span ;
2250- let unsafety = self . parse_unsafety ( Case :: Insensitive ) ;
2262+ let unsafety = self . parse_unsafety ( case ) ;
22512263
22522264 let ext_start_sp = self . token . span ;
2253- let ext = self . parse_extern ( Case :: Insensitive ) ;
2265+ let ext = self . parse_extern ( case ) ;
22542266
22552267 if let Async :: Yes { span, .. } = asyncness {
22562268 self . ban_async_in_2015 ( span) ;
22572269 }
22582270
2259- if !self . eat_keyword_case ( kw:: Fn , Case :: Insensitive ) {
2271+ if !self . eat_keyword_case ( kw:: Fn , case ) {
22602272 // It is possible for `expect_one_of` to recover given the contents of
22612273 // `self.expected_tokens`, therefore, do not use `self.unexpected()` which doesn't
22622274 // account for this.
0 commit comments