Skip to content

Commit 70f8737

Browse files
committed
Auto merge of rust-lang#104410 - WaffleLapkin:unregress, r=estebank
Fix perf regression by correctly matching keywords This should (hopefully) fix regression from rust-lang#99918 r? `@estebank`
2 parents d121aa3 + e2a2816 commit 70f8737

File tree

2 files changed

+22
-10
lines changed

2 files changed

+22
-10
lines changed

compiler/rustc_parse/src/parser/item.rs

+21-9
Original file line numberDiff line numberDiff line change
@@ -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.

compiler/rustc_parse/src/parser/ty.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -536,7 +536,7 @@ impl<'a> Parser<'a> {
536536
};
537537
let span_start = self.token.span;
538538
let ast::FnHeader { ext, unsafety, constness, asyncness } =
539-
self.parse_fn_front_matter(&inherited_vis)?;
539+
self.parse_fn_front_matter(&inherited_vis, Case::Sensitive)?;
540540
if self.may_recover() && self.token.kind == TokenKind::Lt {
541541
self.recover_fn_ptr_with_generics(lo, &mut params, param_insertion_point)?;
542542
}

0 commit comments

Comments
 (0)