@@ -222,7 +222,8 @@ impl<'a> Parser<'a> {
222
222
self.parse_use_item()?
223
223
} else if self.check_fn_front_matter(def_final, case) {
224
224
// 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)?;
226
227
(ident, ItemKind::Fn(Box::new(Fn { defaultness: def_(), sig, generics, body })))
227
228
} else if self.eat_keyword(kw::Extern) {
228
229
if self.eat_keyword(kw::Crate) {
@@ -1792,7 +1793,13 @@ impl<'a> Parser<'a> {
1792
1793
};
1793
1794
// We use `parse_fn` to get a span for the function
1794
1795
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
+ ) {
1796
1803
Ok(_) => {
1797
1804
let mut err = self.struct_span_err(
1798
1805
lo.to(self.prev_token.span),
@@ -2116,8 +2123,9 @@ impl<'a> Parser<'a> {
2116
2123
fn_parse_mode: FnParseMode,
2117
2124
sig_lo: Span,
2118
2125
vis: &Visibility,
2126
+ case: Case,
2119
2127
) -> 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`
2121
2129
let ident = self.parse_ident()?; // `foo`
2122
2130
let mut generics = self.parse_generics()?; // `<'a, T, ...>`
2123
2131
let decl =
@@ -2241,24 +2249,28 @@ impl<'a> Parser<'a> {
2241
2249
///
2242
2250
/// `vis` represents the visibility that was already parsed, if any. Use
2243
2251
/// `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> {
2245
2257
let sp_start = self.token.span;
2246
- let constness = self.parse_constness(Case::Insensitive );
2258
+ let constness = self.parse_constness(case );
2247
2259
2248
2260
let async_start_sp = self.token.span;
2249
- let asyncness = self.parse_asyncness(Case::Insensitive );
2261
+ let asyncness = self.parse_asyncness(case );
2250
2262
2251
2263
let unsafe_start_sp = self.token.span;
2252
- let unsafety = self.parse_unsafety(Case::Insensitive );
2264
+ let unsafety = self.parse_unsafety(case );
2253
2265
2254
2266
let ext_start_sp = self.token.span;
2255
- let ext = self.parse_extern(Case::Insensitive );
2267
+ let ext = self.parse_extern(case );
2256
2268
2257
2269
if let Async::Yes { span, .. } = asyncness {
2258
2270
self.ban_async_in_2015(span);
2259
2271
}
2260
2272
2261
- if !self.eat_keyword_case(kw::Fn, Case::Insensitive ) {
2273
+ if !self.eat_keyword_case(kw::Fn, case ) {
2262
2274
// It is possible for `expect_one_of` to recover given the contents of
2263
2275
// `self.expected_tokens`, therefore, do not use `self.unexpected()` which doesn't
2264
2276
// account for this.
0 commit comments