diff options
| author | David Tolnay <dtolnay@gmail.com> | 2024-12-27 18:43:05 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-27 18:43:05 -0800 |
| commit | 0a09252866e87a1531584bb3066dbd7d51078408 (patch) | |
| tree | 93e3a7b864d3651cad3eee99fc851a10ae6dd1a9 /compiler/rustc_parse/src/parser | |
| parent | 3fc0f08b8988e8864effd2ccaa6187df524e892e (diff) | |
| parent | 26bb4e64645d3f3e0ed0b2921738e56888f96fd1 (diff) | |
| download | rust-0a09252866e87a1531584bb3066dbd7d51078408.tar.gz rust-0a09252866e87a1531584bb3066dbd7d51078408.zip | |
Rollup merge of #134834 - dtolnay:unnamedcall, r=compiler-errors
Skip parenthesis around tuple struct field calls
The pretty-printer previously did not distinguish between named vs unnamed fields when printing a function call containing a struct field. It would print the call as `(self.fun)()` for a named field which is correct, and `(self.0)()` for an unnamed field which is redundant.
This PR changes function calls of tuple struct fields to print without parens.
**Before:**
```rust
struct Tuple(fn());
fn main() {
let tuple = Tuple(|| {});
(tuple.0)();
}
```
**After:**
```rust
struct Tuple(fn());
fn main() {
let tuple = Tuple(|| {});
tuple.0();
}
```
Diffstat (limited to 'compiler/rustc_parse/src/parser')
| -rw-r--r-- | compiler/rustc_parse/src/parser/diagnostics.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/rustc_parse/src/parser/diagnostics.rs b/compiler/rustc_parse/src/parser/diagnostics.rs index aab4e1b1afc..7df7e732925 100644 --- a/compiler/rustc_parse/src/parser/diagnostics.rs +++ b/compiler/rustc_parse/src/parser/diagnostics.rs @@ -1336,7 +1336,7 @@ impl<'a> Parser<'a> { ) -> bool { if let ExprKind::Binary(op, l1, r1) = &inner_op.kind { if let ExprKind::Field(_, ident) = l1.kind - && ident.as_str().parse::<i32>().is_err() + && !ident.is_numeric() && !matches!(r1.kind, ExprKind::Lit(_)) { // The parser has encountered `foo.bar<baz`, the likelihood of the turbofish |
