Skip to content

Commit

Permalink
Sort FxHashSet's contents before emitting errors for consistent output
Browse files Browse the repository at this point in the history
  • Loading branch information
estebank committed Nov 23, 2021
1 parent 38979a3 commit 5402e48
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 21 deletions.
5 changes: 4 additions & 1 deletion compiler/rustc_interface/src/passes.rs
Expand Up @@ -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),
Expand Down
40 changes: 20 additions & 20 deletions src/test/ui/parser/emoji-identifiers.stderr
Expand Up @@ -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
Expand All @@ -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
Expand Down

0 comments on commit 5402e48

Please sign in to comment.