- // If there are attributes present, then `parse_expr` will end up collecting tokens,
- // turning the outer `collect_tokens_no_attrs` into a no-op due to the already present
- // tokens. If there are *not* attributes present, then the outer
- // `collect_tokens_no_attrs` will ensure that we will end up collecting tokens for the
- // expressions.
- //
- // This is less efficient than it could be, since the outer `collect_tokens_no_attrs`
- // still needs to snapshot the `TokenCursor` before calling `parse_expr`, even when
- // `parse_expr` will end up collecting tokens. Ideally, this would work more like
- // `parse_item`, and take in a `ForceCollect` parameter. However, this would require
- // adding a `ForceCollect` parameter in a bunch of places in expression parsing
- // for little gain. If the perf impact from this turns out to be noticeable, we should
- // revisit this apporach.
- NonterminalKind::Expr => {
- token::NtExpr(self.collect_tokens_no_attrs(|this| this.parse_expr())?)
- }