mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 15:23:46 +00:00
Do not provide suggestions for non standard characters
This commit is contained in:
parent
790d19cd25
commit
410fc0e3db
@ -127,14 +127,20 @@ impl NonCamelCaseTypes {
|
||||
if !is_camel_case(name) {
|
||||
cx.struct_span_lint(NON_CAMEL_CASE_TYPES, ident.span, |lint| {
|
||||
let msg = format!("{} `{}` should have an upper camel case name", sort, name);
|
||||
lint.build(&msg)
|
||||
.span_suggestion(
|
||||
let mut err = lint.build(&msg);
|
||||
let cc = to_camel_case(name);
|
||||
// We cannot provide meaningful suggestions
|
||||
// if the characters are in the category of "Lowercase Letter".
|
||||
if name.to_string() != cc {
|
||||
err.span_suggestion(
|
||||
ident.span,
|
||||
"convert the identifier to upper camel case",
|
||||
to_camel_case(name),
|
||||
Applicability::MaybeIncorrect,
|
||||
)
|
||||
.emit()
|
||||
);
|
||||
}
|
||||
|
||||
err.emit();
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -263,17 +269,21 @@ impl NonSnakeCase {
|
||||
let sc = NonSnakeCase::to_snake_case(name);
|
||||
let msg = format!("{} `{}` should have a snake case name", sort, name);
|
||||
let mut err = lint.build(&msg);
|
||||
// We have a valid span in almost all cases, but we don't have one when linting a crate
|
||||
// name provided via the command line.
|
||||
if !ident.span.is_dummy() {
|
||||
err.span_suggestion(
|
||||
ident.span,
|
||||
"convert the identifier to snake case",
|
||||
sc,
|
||||
Applicability::MaybeIncorrect,
|
||||
);
|
||||
} else {
|
||||
err.help(&format!("convert the identifier to snake case: `{}`", sc));
|
||||
// We cannot provide meaningful suggestions
|
||||
// if the characters are in the category of "Uppercase Letter".
|
||||
if name.to_string() != sc {
|
||||
// We have a valid span in almost all cases, but we don't have one when linting a crate
|
||||
// name provided via the command line.
|
||||
if !ident.span.is_dummy() {
|
||||
err.span_suggestion(
|
||||
ident.span,
|
||||
"convert the identifier to snake case",
|
||||
sc,
|
||||
Applicability::MaybeIncorrect,
|
||||
);
|
||||
} else {
|
||||
err.help(&format!("convert the identifier to snake case: `{}`", sc));
|
||||
}
|
||||
}
|
||||
|
||||
err.emit();
|
||||
@ -441,14 +451,20 @@ impl NonUpperCaseGlobals {
|
||||
if name.chars().any(|c| c.is_lowercase()) {
|
||||
cx.struct_span_lint(NON_UPPER_CASE_GLOBALS, ident.span, |lint| {
|
||||
let uc = NonSnakeCase::to_snake_case(&name).to_uppercase();
|
||||
lint.build(&format!("{} `{}` should have an upper case name", sort, name))
|
||||
.span_suggestion(
|
||||
let mut err =
|
||||
lint.build(&format!("{} `{}` should have an upper case name", sort, name));
|
||||
// We cannot provide meaningful suggestions
|
||||
// if the characters are in the category of "Lowercase Letter".
|
||||
if name.to_string() != uc {
|
||||
err.span_suggestion(
|
||||
ident.span,
|
||||
"convert the identifier to upper case",
|
||||
uc,
|
||||
Applicability::MaybeIncorrect,
|
||||
)
|
||||
.emit();
|
||||
);
|
||||
}
|
||||
|
||||
err.emit();
|
||||
})
|
||||
}
|
||||
}
|
||||
|
24
src/test/ui/lint/special-upper-lower-cases.rs
Normal file
24
src/test/ui/lint/special-upper-lower-cases.rs
Normal file
@ -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
|
||||
|
||||
static 𝗻𝗼𝗻𝘂𝗽𝗽𝗲𝗿𝗰𝗮𝘀𝗲: i32 = 1;
|
||||
//~^ WARN: static variable `𝗻𝗼𝗻𝘂𝗽𝗽𝗲𝗿𝗰𝗮𝘀𝗲` should have an upper case name
|
||||
|
||||
fn main() {
|
||||
let 𝓢𝓝𝓐𝓐𝓐𝓐𝓚𝓔𝓢 = 1;
|
||||
//~^ WARN: variable `𝓢𝓝𝓐𝓐𝓐𝓐𝓚𝓔𝓢` should have a snake case name
|
||||
}
|
32
src/test/ui/lint/special-upper-lower-cases.stderr
Normal file
32
src/test/ui/lint/special-upper-lower-cases.stderr
Normal file
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user