Skip to content

Commit 0d04adf

Browse files
committed
Stop relying on hashmap iteration for unused macro rules arms
1 parent 184cfb9 commit 0d04adf

File tree

4 files changed

+25
-23
lines changed

4 files changed

+25
-23
lines changed

compiler/rustc_passes/src/hir_stats.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,9 @@ impl<'k> StatCollector<'k> {
122122
// We will soon sort, so the initial order does not matter.
123123
#[allow(rustc::potential_query_instability)]
124124
let mut nodes: Vec<_> = self.nodes.iter().collect();
125-
nodes.sort_by_key(|(_, node)| node.stats.count * node.stats.size);
125+
nodes.sort_by_cached_key(|(label, node)| {
126+
(node.stats.count * node.stats.size, label.to_owned())
127+
});
126128

127129
let total_size = nodes.iter().map(|(_, node)| node.stats.count * node.stats.size).sum();
128130

tests/ui/lint/unused/unused-macro-rules-compile-error.stderr

+6-6
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,17 @@ note: the lint level is defined here
1010
LL | #![deny(unused_macro_rules)]
1111
| ^^^^^^^^^^^^^^^^^^
1212

13-
error: rule #3 of macro `num2` is never used
14-
--> $DIR/unused-macro-rules-compile-error.rs:22:5
15-
|
16-
LL | (two_) => { compile_error! };
17-
| ^^^^^^
18-
1913
error: rule #2 of macro `num2` is never used
2014
--> $DIR/unused-macro-rules-compile-error.rs:20:5
2115
|
2216
LL | (two) => { fn compile_error() {} };
2317
| ^^^^^
2418

19+
error: rule #3 of macro `num2` is never used
20+
--> $DIR/unused-macro-rules-compile-error.rs:22:5
21+
|
22+
LL | (two_) => { compile_error! };
23+
| ^^^^^^
24+
2525
error: aborting due to 3 previous errors
2626

tests/ui/lint/unused/unused-macro-rules-decl.stderr

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
error: rule #4 of macro `num` is never used
2-
--> $DIR/unused-macro-rules-decl.rs:11:5
1+
error: rule #2 of macro `num` is never used
2+
--> $DIR/unused-macro-rules-decl.rs:9:5
33
|
4-
LL | (four) => { 4 },
5-
| ^^^^^^
4+
LL | (two) => { 2 },
5+
| ^^^^^
66
|
77
note: the lint level is defined here
88
--> $DIR/unused-macro-rules-decl.rs:2:9
99
|
1010
LL | #![deny(unused_macro_rules)]
1111
| ^^^^^^^^^^^^^^^^^^
1212

13-
error: rule #2 of macro `num` is never used
14-
--> $DIR/unused-macro-rules-decl.rs:9:5
13+
error: rule #4 of macro `num` is never used
14+
--> $DIR/unused-macro-rules-decl.rs:11:5
1515
|
16-
LL | (two) => { 2 },
17-
| ^^^^^
16+
LL | (four) => { 4 },
17+
| ^^^^^^
1818

1919
error: rule #3 of macro `num_rec` is never used
2020
--> $DIR/unused-macro-rules-decl.rs:31:5

tests/ui/lint/unused/unused-macro-rules.stderr

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
error: rule #4 of macro `num` is never used
2-
--> $DIR/unused-macro-rules.rs:10:5
1+
error: rule #2 of macro `num` is never used
2+
--> $DIR/unused-macro-rules.rs:8:5
33
|
4-
LL | (four) => { 4 };
5-
| ^^^^^^
4+
LL | (two) => { 2 };
5+
| ^^^^^
66
|
77
note: the lint level is defined here
88
--> $DIR/unused-macro-rules.rs:1:9
99
|
1010
LL | #![deny(unused_macro_rules)]
1111
| ^^^^^^^^^^^^^^^^^^
1212

13-
error: rule #2 of macro `num` is never used
14-
--> $DIR/unused-macro-rules.rs:8:5
13+
error: rule #4 of macro `num` is never used
14+
--> $DIR/unused-macro-rules.rs:10:5
1515
|
16-
LL | (two) => { 2 };
17-
| ^^^^^
16+
LL | (four) => { 4 };
17+
| ^^^^^^
1818

1919
error: rule #3 of macro `num_rec` is never used
2020
--> $DIR/unused-macro-rules.rs:30:5

0 commit comments

Comments
 (0)