diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-12-17 21:29:59 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-17 21:29:59 +0100 |
| commit | 6269bf1a3a17527347d0f7b890840e2cd1ccfd9f (patch) | |
| tree | b57a977cf0cc0eccf5ab2256b339ded37406a1d0 /compiler/rustc_ast/src | |
| parent | 4283aeaca5c0c14864d4af3369a42c6b8b21f80f (diff) | |
| parent | 1fc6dbc32b0aba985af20e8eddfb05337f691dc5 (diff) | |
| download | rust-6269bf1a3a17527347d0f7b890840e2cd1ccfd9f.tar.gz rust-6269bf1a3a17527347d0f7b890840e2cd1ccfd9f.zip | |
Rollup merge of #118880 - GearsDatapacks:issue-118859-fix, r=compiler-errors
More expressions correctly are marked to end with curly braces Fixes #118859, and replaces the mentioned match statement with an exhaustive list, so that this code doesn't get overlooked in the future
Diffstat (limited to 'compiler/rustc_ast/src')
| -rw-r--r-- | compiler/rustc_ast/src/util/classify.rs | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/compiler/rustc_ast/src/util/classify.rs b/compiler/rustc_ast/src/util/classify.rs index 821fca6656c..4dece079783 100644 --- a/compiler/rustc_ast/src/util/classify.rs +++ b/compiler/rustc_ast/src/util/classify.rs @@ -40,15 +40,44 @@ pub fn expr_trailing_brace(mut expr: &ast::Expr) -> Option<&ast::Expr> { | Range(_, Some(e), _) | Ret(Some(e)) | Unary(_, e) - | Yield(Some(e)) => { + | Yield(Some(e)) + | Yeet(Some(e)) + | Become(e) => { expr = e; } Closure(closure) => { expr = &closure.body; } Gen(..) | Block(..) | ForLoop(..) | If(..) | Loop(..) | Match(..) | Struct(..) - | TryBlock(..) | While(..) => break Some(expr), - _ => break None, + | TryBlock(..) | While(..) | ConstBlock(_) => break Some(expr), + + // FIXME: These can end in `}`, but changing these would break stable code. + InlineAsm(_) | OffsetOf(_, _) | MacCall(_) | IncludedBytes(_) | FormatArgs(_) => { + break None; + } + + Break(_, None) + | Range(_, None, _) + | Ret(None) + | Yield(None) + | Array(_) + | Call(_, _) + | MethodCall(_) + | Tup(_) + | Lit(_) + | Cast(_, _) + | Type(_, _) + | Await(_, _) + | Field(_, _) + | Index(_, _, _) + | Underscore + | Path(_, _) + | Continue(_) + | Repeat(_, _) + | Paren(_) + | Try(_) + | Yeet(None) + | Err => break None, } } } |
