diff options
| author | Esteban Kuber <esteban@kuber.com.ar> | 2021-09-14 11:39:49 +0000 |
|---|---|---|
| committer | Esteban Kuber <esteban@kuber.com.ar> | 2021-11-23 20:37:24 +0000 |
| commit | 5402e4833ff1a23218ae77456488d873e261591a (patch) | |
| tree | 7a3a4c0da03c694a15a415967f7807dfaf274afa | |
| parent | 38979a3ba167e6937dee5e434f66aded57d23926 (diff) | |
| download | rust-5402e4833ff1a23218ae77456488d873e261591a.tar.gz rust-5402e4833ff1a23218ae77456488d873e261591a.zip | |
Sort `FxHashSet`'s contents before emitting errors for consistent output
| -rw-r--r-- | compiler/rustc_interface/src/passes.rs | 5 | ||||
| -rw-r--r-- | src/test/ui/parser/emoji-identifiers.stderr | 40 |
2 files changed, 24 insertions, 21 deletions
diff --git a/compiler/rustc_interface/src/passes.rs b/compiler/rustc_interface/src/passes.rs index 67b5833ca47..d3917dfb14a 100644 --- a/compiler/rustc_interface/src/passes.rs +++ b/compiler/rustc_interface/src/passes.rs @@ -452,7 +452,10 @@ pub fn configure_and_expand( // Gate identifiers containing invalid Unicode codepoints that were recovered during lexing. sess.parse_sess.bad_unicode_identifiers.with_lock(|identifiers| { - for (ident, spans) in identifiers.drain() { + let mut identifiers: Vec<_> = identifiers.drain().collect(); + 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), diff --git a/src/test/ui/parser/emoji-identifiers.stderr b/src/test/ui/parser/emoji-identifiers.stderr index a69a9c542d6..5f9263c4c13 100644 --- a/src/test/ui/parser/emoji-identifiers.stderr +++ b/src/test/ui/parser/emoji-identifiers.stderr @@ -18,23 +18,11 @@ 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: identifiers cannot contain emoji: `i_like_to_๐_a_lot` - --> $DIR/emoji-identifiers.rs:13:13 - | -LL | let _ = i_like_to_๐_a_lot() โ 4; - | ^^^^^^^^^^^^^^^^^^ - -error: identifiers cannot contain emoji: `full_of_โจ` - --> $DIR/emoji-identifiers.rs:4:8 - | -LL | fn full_of_โจ() -> ๐ { - | ^^^^^^^^^^ - -error: identifiers cannot contain emoji: `full_ofโจ` - --> $DIR/emoji-identifiers.rs:9:8 +error: identifiers cannot contain emoji: `ABig๐ฉ๐ฉ๐ง๐งFamily` + --> $DIR/emoji-identifiers.rs:1:8 | -LL | ๐::full_ofโจ() - | ^^^^^^^^^ +LL | struct ABig๐ฉ๐ฉ๐ง๐งFamily; + | ^^^^^^^^^^^^^^^^^^ error: identifiers cannot contain emoji: `๐` --> $DIR/emoji-identifiers.rs:2:8 @@ -53,17 +41,29 @@ LL | fn i_like_to_๐ _a_lot() -> ๐ { LL | ๐::full_ofโจ() | ^^ +error: identifiers cannot contain emoji: `full_of_โจ` + --> $DIR/emoji-identifiers.rs:4:8 + | +LL | fn full_of_โจ() -> ๐ { + | ^^^^^^^^^^ + error: identifiers cannot contain emoji: `i_like_to_๐ _a_lot` --> $DIR/emoji-identifiers.rs:8:4 | LL | fn i_like_to_๐ _a_lot() -> ๐ { | ^^^^^^^^^^^^^^^^^^ -error: identifiers cannot contain emoji: `ABig๐ฉ๐ฉ๐ง๐งFamily` - --> $DIR/emoji-identifiers.rs:1:8 +error: identifiers cannot contain emoji: `full_ofโจ` + --> $DIR/emoji-identifiers.rs:9:8 | -LL | struct ABig๐ฉ๐ฉ๐ง๐งFamily; - | ^^^^^^^^^^^^^^^^^^ +LL | ๐::full_ofโจ() + | ^^^^^^^^^ + +error: identifiers cannot contain emoji: `i_like_to_๐_a_lot` + --> $DIR/emoji-identifiers.rs:13:13 + | +LL | let _ = i_like_to_๐_a_lot() โ 4; + | ^^^^^^^^^^^^^^^^^^ error[E0599]: no function or associated item named `full_ofโจ` found for struct `๐` in the current scope --> $DIR/emoji-identifiers.rs:9:8 |
