1
Fork 0

Fix problem causing rusqlite compilation to OOM.

This makes the expression re-parsing more like how it's originally done
in `parse_nonterminal`.
This commit is contained in:
Nicholas Nethercote 2025-03-31 16:32:55 +11:00
parent 81afdbc161
commit 592d113ff2
2 changed files with 136 additions and 1 deletions

View file

@ -1397,7 +1397,9 @@ impl<'a> Parser<'a> {
} else if let Some(expr) = self.eat_metavar_seq_with_matcher(
|mv_kind| matches!(mv_kind, MetaVarKind::Expr { .. }),
|this| {
let expr = this.parse_expr();
// Force collection (as opposed to just `parse_expr`) is required to avoid the
// attribute duplication seen in #138478.
let expr = this.parse_expr_force_collect();
// FIXME(nnethercote) Sometimes with expressions we get a trailing comma, possibly
// related to the FIXME in `collect_tokens_for_expr`. Examples are the multi-line
// `assert_eq!` calls involving arguments annotated with `#[rustfmt::skip]` in