-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
lint: Do not provide suggestions for non standard characters #77805
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
// (#77273) These characters are in the general categories of | ||
// "Uppercase/Lowercase Letter". | ||
// The diagnostics don't provide meaningful suggestions for them | ||
// as we cannot convert them properly. | ||
|
||
// check-pass | ||
|
||
#![feature(non_ascii_idents)] | ||
#![allow(uncommon_codepoints, unused)] | ||
|
||
struct 𝕟𝕠𝕥𝕒𝕔𝕒𝕞𝕖𝕝; | ||
//~^ WARN: type `𝕟𝕠𝕥𝕒𝕔𝕒𝕞𝕖𝕝` should have an upper camel case name | ||
|
||
// FIXME: How we should handle this? | ||
struct 𝕟𝕠𝕥_𝕒_𝕔𝕒𝕞𝕖𝕝; | ||
//~^ WARN: type `𝕟𝕠𝕥_𝕒_𝕔𝕒𝕞𝕖𝕝` should have an upper camel case name | ||
Comment on lines
+14
to
+16
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @estebank Do you have any ideas to improve this case? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. we can probably improve this in a separate pr if needed There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @JohnTitor I just took a look at this. The problem is that (Yes, I know this is 3 months later. I've had this tab open since then to look into this once I had enough time 😅) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. what do you think of the suggestion given in #77805 (comment) : check if the tranformed string would also produce a warning, and don't warn if it does. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That could make sense. After all the PascalCase convention for types is good to differentiate them from bindings and functions, but when writing a struct or trait called 𝛅 you probably are encoding "business logic" with prior conventions. It doesn't make that much sense to complain about it. The problem is that then we wouldn't lint any of these cases then. Maybe we need two lints, for different levels of checks: one for the "simple" rule check of what PascalCase is "supposed to be" and another for the more lenient but also more useful in practice check of "can this string be mechanically changed into a valid form". But that would be... likely controversial. I guess if you're doing "mathy" things, you would just have to disable the lint... I am somewhat surprised at the behavior here because although 𝕟 doesn't have a corresponding upper-case character, 𝕞 does: 𝕄, but |
||
|
||
static 𝗻𝗼𝗻𝘂𝗽𝗽𝗲𝗿𝗰𝗮𝘀𝗲: i32 = 1; | ||
//~^ WARN: static variable `𝗻𝗼𝗻𝘂𝗽𝗽𝗲𝗿𝗰𝗮𝘀𝗲` should have an upper case name | ||
|
||
fn main() { | ||
let 𝓢𝓝𝓐𝓐𝓐𝓐𝓚𝓔𝓢 = 1; | ||
//~^ WARN: variable `𝓢𝓝𝓐𝓐𝓐𝓐𝓚𝓔𝓢` should have a snake case name | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
warning: type `𝕟𝕠𝕥𝕒𝕔𝕒𝕞𝕖𝕝` should have an upper camel case name | ||
--> $DIR/special-upper-lower-cases.rs:11:8 | ||
| | ||
LL | struct 𝕟𝕠𝕥𝕒𝕔𝕒𝕞𝕖𝕝; | ||
| ^^^^^^^^^ | ||
| | ||
= note: `#[warn(non_camel_case_types)]` on by default | ||
|
||
warning: type `𝕟𝕠𝕥_𝕒_𝕔𝕒𝕞𝕖𝕝` should have an upper camel case name | ||
--> $DIR/special-upper-lower-cases.rs:15:8 | ||
| | ||
LL | struct 𝕟𝕠𝕥_𝕒_𝕔𝕒𝕞𝕖𝕝; | ||
| ^^^^^^^^^^^ help: convert the identifier to upper camel case: `𝕟𝕠𝕥𝕒𝕔𝕒𝕞𝕖𝕝` | ||
|
||
warning: static variable `𝗻𝗼𝗻𝘂𝗽𝗽𝗲𝗿𝗰𝗮𝘀𝗲` should have an upper case name | ||
--> $DIR/special-upper-lower-cases.rs:18:8 | ||
| | ||
LL | static 𝗻𝗼𝗻𝘂𝗽𝗽𝗲𝗿𝗰𝗮𝘀𝗲: i32 = 1; | ||
| ^^^^^^^^^^^^ | ||
| | ||
= note: `#[warn(non_upper_case_globals)]` on by default | ||
|
||
warning: variable `𝓢𝓝𝓐𝓐𝓐𝓐𝓚𝓔𝓢` should have a snake case name | ||
--> $DIR/special-upper-lower-cases.rs:22:9 | ||
| | ||
LL | let 𝓢𝓝𝓐𝓐𝓐𝓐𝓚𝓔𝓢 = 1; | ||
| ^^^^^^^^^ | ||
| | ||
= note: `#[warn(non_snake_case)]` on by default | ||
|
||
warning: 4 warnings emitted | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggestion:
And similar could be done for the snake_case branch.
This way we would not give a suggestion if the resulting string is not conform to the style it tries to enforce.
(I'd even say that in this case, we should probably not even warn. If a mathematical symbol that does not have a representation in the given style, then it should be fine to use it)
Edit: fixed the condition