diff options
| author | David Tolnay <dtolnay@gmail.com> | 2023-12-29 18:04:04 -0800 |
|---|---|---|
| committer | David Tolnay <dtolnay@gmail.com> | 2024-05-11 15:49:51 -0700 |
| commit | 53521faf06cb5ada4df7984fcd53b602b4ee2dd0 (patch) | |
| tree | fe15b90e1f0782f55dada9b900277379bcb0fa72 /compiler/rustc_parse/src/parser/expr.rs | |
| parent | aedc1b6ad4845242d06a3f7cfb9b57db227b3511 (diff) | |
| download | rust-53521faf06cb5ada4df7984fcd53b602b4ee2dd0.tar.gz rust-53521faf06cb5ada4df7984fcd53b602b4ee2dd0.zip | |
Remove MacCall special cases from Parser::parse_full_stmt
It is impossible for expr here to be a braced macro call. Expr comes
from `parse_stmt_without_recovery`, in which macro calls are parsed by
`parse_stmt_mac`. See this part:
let kind = if (style == MacStmtStyle::Braces
&& self.token != token::Dot
&& self.token != token::Question)
|| self.token == token::Semi
|| self.token == token::Eof
{
StmtKind::MacCall(P(MacCallStmt { mac, style, attrs, tokens: None }))
} else {
// Since none of the above applied, this is an expression statement macro.
let e = self.mk_expr(lo.to(hi), ExprKind::MacCall(mac));
let e = self.maybe_recover_from_bad_qpath(e)?;
let e = self.parse_expr_dot_or_call_with(e, lo, attrs)?;
let e = self.parse_expr_assoc_with(
0,
LhsExpr::AlreadyParsed { expr: e, starts_statement: false },
)?;
StmtKind::Expr(e)
};
A braced macro call at the head of a statement is always either extended
into ExprKind::Field / MethodCall / Await / Try / Binary, or else
returned as StmtKind::MacCall. We can never get a StmtKind::Expr
containing ExprKind::MacCall containing brace delimiter.
Diffstat (limited to 'compiler/rustc_parse/src/parser/expr.rs')
0 files changed, 0 insertions, 0 deletions
