mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-28 02:57:37 +00:00
Rollup merge of #91476 - m-ou-se:ferris-identifier, r=estebank
Improve 'cannot contain emoji' error. Before: ``` error: identifiers cannot contain emoji: `🦀` --> src/main.rs:2:9 | 2 | let 🦀 = 1; | ^^ ``` After: ``` error: Ferris cannot be used as an identifier --> src/main.rs:2:9 | 2 | let 🦀 = 1; | ^^ help: try using their name instead: `ferris` ``` r? `@estebank`
This commit is contained in:
commit
dc834f08ba
@ -10,7 +10,7 @@ use rustc_codegen_ssa::traits::CodegenBackend;
|
||||
use rustc_data_structures::parallel;
|
||||
use rustc_data_structures::sync::{Lrc, OnceCell, WorkerLocal};
|
||||
use rustc_data_structures::temp_dir::MaybeTempDir;
|
||||
use rustc_errors::{ErrorReported, PResult};
|
||||
use rustc_errors::{Applicability, ErrorReported, PResult};
|
||||
use rustc_expand::base::ExtCtxt;
|
||||
use rustc_hir::def_id::{StableCrateId, LOCAL_CRATE};
|
||||
use rustc_hir::Crate;
|
||||
@ -456,10 +456,26 @@ pub fn configure_and_expand(
|
||||
identifiers.sort_by_key(|&(key, _)| key);
|
||||
for (ident, mut spans) in identifiers.into_iter() {
|
||||
spans.sort();
|
||||
sess.diagnostic().span_err(
|
||||
MultiSpan::from(spans),
|
||||
&format!("identifiers cannot contain emoji: `{}`", ident),
|
||||
);
|
||||
if ident == sym::ferris {
|
||||
let first_span = spans[0];
|
||||
sess.diagnostic()
|
||||
.struct_span_err(
|
||||
MultiSpan::from(spans),
|
||||
"Ferris cannot be used as an identifier",
|
||||
)
|
||||
.span_suggestion(
|
||||
first_span,
|
||||
"try using their name instead",
|
||||
"ferris".to_string(),
|
||||
Applicability::MaybeIncorrect,
|
||||
)
|
||||
.emit();
|
||||
} else {
|
||||
sess.diagnostic().span_err(
|
||||
MultiSpan::from(spans),
|
||||
&format!("identifiers cannot contain emoji: `{}`", ident),
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -630,6 +630,7 @@ symbols! {
|
||||
fdiv_fast,
|
||||
feature,
|
||||
fence,
|
||||
ferris: "🦀",
|
||||
fetch_update,
|
||||
ffi,
|
||||
ffi_const,
|
||||
|
@ -13,4 +13,7 @@ fn main() {
|
||||
let _ = i_like_to_😄_a_lot() ➖ 4; //~ ERROR cannot find function `i_like_to_😄_a_lot` in this scope
|
||||
//~^ ERROR identifiers cannot contain emoji
|
||||
//~| ERROR unknown start of token: \u{2796}
|
||||
|
||||
let 🦀 = 1;//~ ERROR Ferris cannot be used as an identifier
|
||||
dbg!(🦀);
|
||||
}
|
||||
|
@ -18,6 +18,14 @@ LL | fn i_like_to_😅_a_lot() -> 👀 {
|
||||
LL | let _ = i_like_to_😄_a_lot() ➖ 4;
|
||||
| ^^^^^^^^^^^^^^^^^^ help: a function with a similar name exists: `i_like_to_😅_a_lot`
|
||||
|
||||
error: Ferris cannot be used as an identifier
|
||||
--> $DIR/emoji-identifiers.rs:17:9
|
||||
|
|
||||
LL | let 🦀 = 1;
|
||||
| ^^ help: try using their name instead: `ferris`
|
||||
LL | dbg!(🦀);
|
||||
| ^^
|
||||
|
||||
error: identifiers cannot contain emoji: `ABig👩👩👧👧Family`
|
||||
--> $DIR/emoji-identifiers.rs:1:8
|
||||
|
|
||||
@ -77,7 +85,7 @@ LL | 👀::full_of✨()
|
||||
| function or associated item not found in `👀`
|
||||
| help: there is an associated function with a similar name: `full_of_✨`
|
||||
|
||||
error: aborting due to 9 previous errors
|
||||
error: aborting due to 10 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0425, E0599.
|
||||
For more information about an error, try `rustc --explain E0425`.
|
||||
|
Loading…
Reference in New Issue
Block a user