-
Notifications
You must be signed in to change notification settings - Fork 13.7k
Closed
Labels
A-diagnosticsArea: Messages for errors, warnings, and lintsArea: Messages for errors, warnings, and lintsD-newcomer-roadblockDiagnostics: Confusing error or lint; hard to understand for new users.Diagnostics: Confusing error or lint; hard to understand for new users.D-papercutDiagnostics: An error or lint that needs small tweaks.Diagnostics: An error or lint that needs small tweaks.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Description
Type mismatch errors with a 1-tuple and a single value wrapped in parentheses could be improved.
let _t: (u8,) = (1);
Playground link with a few other examples
The current output is:
warning: unnecessary parentheses around assigned value
--> src/main.rs:2:21
|
2 | let _t: (u8,) = (1);
| ^^^ help: remove these parentheses
|
= note: `#[warn(unused_parens)]` on by default
error[E0308]: mismatched types
--> src/main.rs:2:21
|
2 | let _t: (u8,) = (1);
| ----- ^^^ expected tuple, found integer
| |
| expected due to this
|
= note: expected tuple `(u8,)`
found type `{integer}`
Ideally the E0308 mismatched types error could have a hint when the type of the value and the type of the element in the 1-tuple match that is something along the lines of
help: a tuple with one element needs a comma
let _t: (u8,) = (1,);
^
I believe that this could improve newcomers' experience by highlighting the difference in the types, especially when the type is inferred like in some of the other playground examples, and explaining the syntax to create a tuple.
Inspired by #86019
@rustbot label +D-papercut +D-newcomer-roadblock
Metadata
Metadata
Assignees
Labels
A-diagnosticsArea: Messages for errors, warnings, and lintsArea: Messages for errors, warnings, and lintsD-newcomer-roadblockDiagnostics: Confusing error or lint; hard to understand for new users.Diagnostics: Confusing error or lint; hard to understand for new users.D-papercutDiagnostics: An error or lint that needs small tweaks.Diagnostics: An error or lint that needs small tweaks.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.