Skip to content

Commit 37b12b1

Browse files
committed
Handle rustc_resolve cases of rustc::potential_query_instability lint
1 parent 1e5719b commit 37b12b1

File tree

11 files changed

+53
-54
lines changed

11 files changed

+53
-54
lines changed

compiler/rustc_middle/src/ty/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ pub struct ResolverGlobalCtxt {
175175
/// Item with a given `LocalDefId` was defined during macro expansion with ID `ExpnId`.
176176
pub expn_that_defined: FxHashMap<LocalDefId, ExpnId>,
177177
pub effective_visibilities: EffectiveVisibilities,
178-
pub extern_crate_map: FxHashMap<LocalDefId, CrateNum>,
178+
pub extern_crate_map: FxIndexMap<LocalDefId, CrateNum>,
179179
pub maybe_unused_trait_imports: FxIndexSet<LocalDefId>,
180180
pub module_children: LocalDefIdMap<Vec<ModChild>>,
181181
pub glob_map: FxHashMap<LocalDefId, FxHashSet<Symbol>>,

compiler/rustc_resolve/src/diagnostics.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use rustc_ast::{
66
Path,
77
};
88
use rustc_ast_pretty::pprust;
9-
use rustc_data_structures::fx::FxHashSet;
9+
use rustc_data_structures::fx::{FxHashSet, FxIndexSet};
1010
use rustc_errors::codes::*;
1111
use rustc_errors::{
1212
Applicability, Diag, DiagCtxtHandle, ErrorGuaranteed, MultiSpan, SuggestionStyle,
@@ -2843,7 +2843,7 @@ fn show_candidates(
28432843
let mut kinds = accessible_path_strings
28442844
.iter()
28452845
.map(|(_, descr, _, _, _)| *descr)
2846-
.collect::<FxHashSet<&str>>()
2846+
.collect::<FxIndexSet<&str>>()
28472847
.into_iter();
28482848
let kind = if let Some(kind) = kinds.next()
28492849
&& let None = kinds.next()

compiler/rustc_resolve/src/imports.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use std::cell::Cell;
44
use std::mem;
55

66
use rustc_ast::NodeId;
7-
use rustc_data_structures::fx::FxHashSet;
7+
use rustc_data_structures::fx::{FxHashSet, FxIndexSet};
88
use rustc_data_structures::intern::Interned;
99
use rustc_errors::codes::*;
1010
use rustc_errors::{Applicability, MultiSpan, pluralize, struct_span_code_err};
@@ -220,7 +220,7 @@ impl<'ra> ImportData<'ra> {
220220
pub(crate) struct NameResolution<'ra> {
221221
/// Single imports that may define the name in the namespace.
222222
/// Imports are arena-allocated, so it's ok to use pointers as keys.
223-
pub single_imports: FxHashSet<Import<'ra>>,
223+
pub single_imports: FxIndexSet<Import<'ra>>,
224224
/// The least shadowable known binding for this name, or None if there are no known bindings.
225225
pub binding: Option<NameBinding<'ra>>,
226226
pub shadowed_glob: Option<NameBinding<'ra>>,
@@ -482,7 +482,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
482482
let key = BindingKey::new(target, ns);
483483
let _ = this.try_define(import.parent_scope.module, key, dummy_binding, false);
484484
this.update_resolution(import.parent_scope.module, key, false, |_, resolution| {
485-
resolution.single_imports.remove(&import);
485+
resolution.single_imports.shift_remove(&import);
486486
})
487487
});
488488
self.record_use(target, dummy_binding, Used::Other);
@@ -837,7 +837,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
837837
}
838838
let key = BindingKey::new(target, ns);
839839
this.update_resolution(parent, key, false, |_, resolution| {
840-
resolution.single_imports.remove(&import);
840+
resolution.single_imports.shift_remove(&import);
841841
});
842842
}
843843
}

compiler/rustc_resolve/src/late.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use std::mem::{replace, swap, take};
1515
use rustc_ast::ptr::P;
1616
use rustc_ast::visit::{AssocCtxt, BoundKind, FnCtxt, FnKind, Visitor, visit_opt, walk_list};
1717
use rustc_ast::*;
18-
use rustc_data_structures::fx::{FxHashMap, FxHashSet, FxIndexMap};
18+
use rustc_data_structures::fx::{FxHashMap, FxHashSet, FxIndexMap, FxIndexSet};
1919
use rustc_errors::codes::*;
2020
use rustc_errors::{Applicability, DiagArgValue, IntoDiagArg, StashKey, Suggestions};
2121
use rustc_hir::def::Namespace::{self, *};
@@ -44,7 +44,7 @@ mod diagnostics;
4444

4545
type Res = def::Res<NodeId>;
4646

47-
type IdentMap<T> = FxHashMap<Ident, T>;
47+
type IdentMap<T> = FxIndexMap<Ident, T>;
4848

4949
use diagnostics::{ElisionFnParameter, LifetimeElisionCandidate, MissingLifetime};
5050

@@ -640,7 +640,7 @@ struct DiagMetadata<'ast> {
640640

641641
/// A list of labels as of yet unused. Labels will be removed from this map when
642642
/// they are used (in a `break` or `continue` statement)
643-
unused_labels: FxHashMap<NodeId, Span>,
643+
unused_labels: FxIndexMap<NodeId, Span>,
644644

645645
/// Only used for better errors on `let x = { foo: bar };`.
646646
/// In the case of a parse error with `let x = { foo: bar, };`, this isn't needed, it's only
@@ -1550,7 +1550,7 @@ impl<'a, 'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
15501550
// Allow all following defaults to refer to this type parameter.
15511551
forward_ty_ban_rib
15521552
.bindings
1553-
.remove(&Ident::with_dummy_span(param.ident.name));
1553+
.shift_remove(&Ident::with_dummy_span(param.ident.name));
15541554
}
15551555
GenericParamKind::Const { ref ty, kw_span: _, ref default } => {
15561556
// Const parameters can't have param bounds.
@@ -1578,7 +1578,7 @@ impl<'a, 'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
15781578
// Allow all following defaults to refer to this const parameter.
15791579
forward_const_ban_rib
15801580
.bindings
1581-
.remove(&Ident::with_dummy_span(param.ident.name));
1581+
.shift_remove(&Ident::with_dummy_span(param.ident.name));
15821582
}
15831583
}
15841584
}
@@ -2236,7 +2236,7 @@ impl<'a, 'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
22362236
let local_candidates = self.lifetime_elision_candidates.take();
22372237

22382238
if let Some(candidates) = local_candidates {
2239-
let distinct: FxHashSet<_> = candidates.iter().map(|(res, _)| *res).collect();
2239+
let distinct: FxIndexSet<_> = candidates.iter().map(|(res, _)| *res).collect();
22402240
let lifetime_count = distinct.len();
22412241
if lifetime_count != 0 {
22422242
parameter_info.push(ElisionFnParameter {
@@ -4620,7 +4620,7 @@ impl<'a, 'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
46204620
Ok((node_id, _)) => {
46214621
// Since this res is a label, it is never read.
46224622
self.r.label_res_map.insert(expr.id, node_id);
4623-
self.diag_metadata.unused_labels.remove(&node_id);
4623+
self.diag_metadata.unused_labels.shift_remove(&node_id);
46244624
}
46254625
Err(error) => {
46264626
self.report_error(label.ident.span, error);

compiler/rustc_resolve/src/late/diagnostics.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -958,7 +958,7 @@ impl<'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'_, 'ast, 'ra, 'tcx> {
958958
Applicability::MaybeIncorrect,
959959
);
960960
// Do not lint against unused label when we suggest them.
961-
self.diag_metadata.unused_labels.remove(node_id);
961+
self.diag_metadata.unused_labels.shift_remove(node_id);
962962
}
963963
}
964964
}

compiler/rustc_resolve/src/lib.rs

+11-12
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
// tidy-alphabetical-start
1010
#![allow(internal_features)]
1111
#![allow(rustc::diagnostic_outside_of_impl)]
12-
#![allow(rustc::potential_query_instability)]
1312
#![allow(rustc::untranslatable_diagnostic)]
1413
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
1514
#![doc(rust_logo)]
@@ -1022,7 +1021,7 @@ pub struct Resolver<'ra, 'tcx> {
10221021
graph_root: Module<'ra>,
10231022

10241023
prelude: Option<Module<'ra>>,
1025-
extern_prelude: FxHashMap<Ident, ExternPreludeEntry<'ra>>,
1024+
extern_prelude: FxIndexMap<Ident, ExternPreludeEntry<'ra>>,
10261025

10271026
/// N.B., this is used only for better diagnostics, not name resolution itself.
10281027
field_names: LocalDefIdMap<Vec<Ident>>,
@@ -1055,7 +1054,7 @@ pub struct Resolver<'ra, 'tcx> {
10551054
extra_lifetime_params_map: NodeMap<Vec<(Ident, NodeId, LifetimeRes)>>,
10561055

10571056
/// `CrateNum` resolutions of `extern crate` items.
1058-
extern_crate_map: FxHashMap<LocalDefId, CrateNum>,
1057+
extern_crate_map: FxIndexMap<LocalDefId, CrateNum>,
10591058
module_children: LocalDefIdMap<Vec<ModChild>>,
10601059
trait_map: NodeMap<Vec<TraitCandidate>>,
10611060

@@ -1078,7 +1077,7 @@ pub struct Resolver<'ra, 'tcx> {
10781077
/// some AST passes can generate identifiers that only resolve to local or
10791078
/// lang items.
10801079
empty_module: Module<'ra>,
1081-
module_map: FxHashMap<DefId, Module<'ra>>,
1080+
module_map: FxIndexMap<DefId, Module<'ra>>,
10821081
binding_parent_modules: FxHashMap<NameBinding<'ra>, Module<'ra>>,
10831082

10841083
underscore_disambiguator: u32,
@@ -1114,15 +1113,15 @@ pub struct Resolver<'ra, 'tcx> {
11141113
macro_names: FxHashSet<Ident>,
11151114
builtin_macros: FxHashMap<Symbol, BuiltinMacroState>,
11161115
registered_tools: &'tcx RegisteredTools,
1117-
macro_use_prelude: FxHashMap<Symbol, NameBinding<'ra>>,
1116+
macro_use_prelude: FxIndexMap<Symbol, NameBinding<'ra>>,
11181117
macro_map: FxHashMap<DefId, MacroData>,
11191118
dummy_ext_bang: Lrc<SyntaxExtension>,
11201119
dummy_ext_derive: Lrc<SyntaxExtension>,
11211120
non_macro_attr: MacroData,
11221121
local_macro_def_scopes: FxHashMap<LocalDefId, Module<'ra>>,
11231122
ast_transform_scopes: FxHashMap<LocalExpnId, Module<'ra>>,
1124-
unused_macros: FxHashMap<LocalDefId, (NodeId, Ident)>,
1125-
unused_macro_rules: FxHashMap<(LocalDefId, usize), (Ident, Span)>,
1123+
unused_macros: FxIndexMap<LocalDefId, (NodeId, Ident)>,
1124+
unused_macro_rules: FxIndexMap<(LocalDefId, usize), (Ident, Span)>,
11261125
proc_macro_stubs: FxHashSet<LocalDefId>,
11271126
/// Traces collected during macro resolution and validated when it's complete.
11281127
single_segment_macro_resolutions:
@@ -1234,7 +1233,7 @@ impl<'ra> ResolverArenas<'ra> {
12341233
expn_id: ExpnId,
12351234
span: Span,
12361235
no_implicit_prelude: bool,
1237-
module_map: &mut FxHashMap<DefId, Module<'ra>>,
1236+
module_map: &mut FxIndexMap<DefId, Module<'ra>>,
12381237
module_self_bindings: &mut FxHashMap<Module<'ra>, NameBinding<'ra>>,
12391238
) -> Module<'ra> {
12401239
let module = Module(Interned::new_unchecked(self.modules.alloc(ModuleData::new(
@@ -1379,7 +1378,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
13791378
arenas: &'ra ResolverArenas<'ra>,
13801379
) -> Resolver<'ra, 'tcx> {
13811380
let root_def_id = CRATE_DEF_ID.to_def_id();
1382-
let mut module_map = FxHashMap::default();
1381+
let mut module_map = FxIndexMap::default();
13831382
let mut module_self_bindings = FxHashMap::default();
13841383
let graph_root = arenas.new_module(
13851384
None,
@@ -1396,7 +1395,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
13961395
ExpnId::root(),
13971396
DUMMY_SP,
13981397
true,
1399-
&mut FxHashMap::default(),
1398+
&mut FxIndexMap::default(),
14001399
&mut FxHashMap::default(),
14011400
);
14021401

@@ -1412,7 +1411,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
14121411
let mut invocation_parents = FxHashMap::default();
14131412
invocation_parents.insert(LocalExpnId::ROOT, InvocationParent::ROOT);
14141413

1415-
let mut extern_prelude: FxHashMap<Ident, ExternPreludeEntry<'_>> = tcx
1414+
let mut extern_prelude: FxIndexMap<Ident, ExternPreludeEntry<'_>> = tcx
14161415
.sess
14171416
.opts
14181417
.externs
@@ -1512,7 +1511,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
15121511
macro_names: FxHashSet::default(),
15131512
builtin_macros: Default::default(),
15141513
registered_tools,
1515-
macro_use_prelude: FxHashMap::default(),
1514+
macro_use_prelude: FxIndexMap::default(),
15161515
macro_map: FxHashMap::default(),
15171516
dummy_ext_bang: Lrc::new(SyntaxExtension::dummy_bang(edition)),
15181517
dummy_ext_derive: Lrc::new(SyntaxExtension::dummy_derive(edition)),

compiler/rustc_resolve/src/macros.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ impl<'ra, 'tcx> ResolverExpand for Resolver<'ra, 'tcx> {
340340

341341
fn record_macro_rule_usage(&mut self, id: NodeId, rule_i: usize) {
342342
let did = self.local_def_id(id);
343-
self.unused_macro_rules.remove(&(did, rule_i));
343+
self.unused_macro_rules.shift_remove(&(did, rule_i));
344344
}
345345

346346
fn check_unused_macros(&mut self) {
@@ -594,7 +594,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
594594
match res {
595595
Res::Def(DefKind::Macro(_), def_id) => {
596596
if let Some(def_id) = def_id.as_local() {
597-
self.unused_macros.remove(&def_id);
597+
self.unused_macros.shift_remove(&def_id);
598598
if self.proc_macro_stubs.contains(&def_id) {
599599
self.dcx().emit_err(errors::ProcMacroSameCrate {
600600
span: path.span,

compiler/rustc_resolve/src/rustdoc.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use pulldown_cmark::{
66
};
77
use rustc_ast as ast;
88
use rustc_ast::util::comments::beautify_doc_string;
9-
use rustc_data_structures::fx::FxHashMap;
9+
use rustc_data_structures::fx::FxIndexMap;
1010
use rustc_middle::ty::TyCtxt;
1111
use rustc_span::def_id::DefId;
1212
use rustc_span::symbol::{Symbol, kw, sym};
@@ -235,8 +235,8 @@ fn span_for_value(attr: &ast::Attribute) -> Span {
235235
/// early and late doc link resolution regardless of their position.
236236
pub fn prepare_to_doc_link_resolution(
237237
doc_fragments: &[DocFragment],
238-
) -> FxHashMap<Option<DefId>, String> {
239-
let mut res = FxHashMap::default();
238+
) -> FxIndexMap<Option<DefId>, String> {
239+
let mut res = FxIndexMap::default();
240240
for fragment in doc_fragments {
241241
let out_str = res.entry(fragment.item_id).or_default();
242242
add_doc_fragment(out_str, fragment);

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)