Handle rustc_metadata cases of rustc::potential_query_instability lint

This commit is contained in:
ismailarilik 2024-10-03 08:23:30 +03:00
parent ad9c494835
commit 3d8bd6bbc5
4 changed files with 14 additions and 15 deletions

View File

@ -1,6 +1,5 @@
// tidy-alphabetical-start // tidy-alphabetical-start
#![allow(internal_features)] #![allow(internal_features)]
#![allow(rustc::potential_query_instability)]
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")] #![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
#![doc(rust_logo)] #![doc(rust_logo)]
#![feature(control_flow_enum)] #![feature(control_flow_enum)]

View File

@ -218,7 +218,7 @@ use std::ops::Deref;
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
use std::{cmp, fmt}; use std::{cmp, fmt};
use rustc_data_structures::fx::{FxHashMap, FxHashSet}; use rustc_data_structures::fx::{FxHashSet, FxIndexMap};
use rustc_data_structures::memmap::Mmap; use rustc_data_structures::memmap::Mmap;
use rustc_data_structures::owned_slice::slice_owned; use rustc_data_structures::owned_slice::slice_owned;
use rustc_data_structures::svh::Svh; use rustc_data_structures::svh::Svh;
@ -385,7 +385,7 @@ impl<'a> CrateLocator<'a> {
let dylib_suffix = &self.target.dll_suffix; let dylib_suffix = &self.target.dll_suffix;
let staticlib_suffix = &self.target.staticlib_suffix; let staticlib_suffix = &self.target.staticlib_suffix;
let mut candidates: FxHashMap<_, (FxHashMap<_, _>, FxHashMap<_, _>, FxHashMap<_, _>)> = let mut candidates: FxIndexMap<_, (FxIndexMap<_, _>, FxIndexMap<_, _>, FxIndexMap<_, _>)> =
Default::default(); Default::default();
// First, find all possible candidate rlibs and dylibs purely based on // First, find all possible candidate rlibs and dylibs purely based on
@ -460,7 +460,7 @@ impl<'a> CrateLocator<'a> {
// A Library candidate is created if the metadata for the set of // A Library candidate is created if the metadata for the set of
// libraries corresponds to the crate id and hash criteria that this // libraries corresponds to the crate id and hash criteria that this
// search is being performed for. // search is being performed for.
let mut libraries = FxHashMap::default(); let mut libraries = FxIndexMap::default();
for (_hash, (rlibs, rmetas, dylibs)) in candidates { for (_hash, (rlibs, rmetas, dylibs)) in candidates {
if let Some((svh, lib)) = self.extract_lib(rlibs, rmetas, dylibs)? { if let Some((svh, lib)) = self.extract_lib(rlibs, rmetas, dylibs)? {
libraries.insert(svh, lib); libraries.insert(svh, lib);
@ -494,9 +494,9 @@ impl<'a> CrateLocator<'a> {
fn extract_lib( fn extract_lib(
&mut self, &mut self,
rlibs: FxHashMap<PathBuf, PathKind>, rlibs: FxIndexMap<PathBuf, PathKind>,
rmetas: FxHashMap<PathBuf, PathKind>, rmetas: FxIndexMap<PathBuf, PathKind>,
dylibs: FxHashMap<PathBuf, PathKind>, dylibs: FxIndexMap<PathBuf, PathKind>,
) -> Result<Option<(Svh, Library)>, CrateError> { ) -> Result<Option<(Svh, Library)>, CrateError> {
let mut slot = None; let mut slot = None;
// Order here matters, rmeta should come first. See comment in // Order here matters, rmeta should come first. See comment in
@ -534,7 +534,7 @@ impl<'a> CrateLocator<'a> {
// The `PathBuf` in `slot` will only be used for diagnostic purposes. // The `PathBuf` in `slot` will only be used for diagnostic purposes.
fn extract_one( fn extract_one(
&mut self, &mut self,
m: FxHashMap<PathBuf, PathKind>, m: FxIndexMap<PathBuf, PathKind>,
flavor: CrateFlavor, flavor: CrateFlavor,
slot: &mut Option<(Svh, MetadataBlob, PathBuf)>, slot: &mut Option<(Svh, MetadataBlob, PathBuf)>,
) -> Result<Option<(PathBuf, PathKind)>, CrateError> { ) -> Result<Option<(PathBuf, PathKind)>, CrateError> {
@ -702,9 +702,9 @@ impl<'a> CrateLocator<'a> {
// First, filter out all libraries that look suspicious. We only accept // First, filter out all libraries that look suspicious. We only accept
// files which actually exist that have the correct naming scheme for // files which actually exist that have the correct naming scheme for
// rlibs/dylibs. // rlibs/dylibs.
let mut rlibs = FxHashMap::default(); let mut rlibs = FxIndexMap::default();
let mut rmetas = FxHashMap::default(); let mut rmetas = FxIndexMap::default();
let mut dylibs = FxHashMap::default(); let mut dylibs = FxIndexMap::default();
for loc in &self.exact_paths { for loc in &self.exact_paths {
if !loc.canonicalized().exists() { if !loc.canonicalized().exists() {
return Err(CrateError::ExternLocationNotExist( return Err(CrateError::ExternLocationNotExist(

View File

@ -187,8 +187,8 @@ pub struct ResolverGlobalCtxt {
/// Mapping from ident span to path span for paths that don't exist as written, but that /// Mapping from ident span to path span for paths that don't exist as written, but that
/// exist under `std`. For example, wrote `str::from_utf8` instead of `std::str::from_utf8`. /// exist under `std`. For example, wrote `str::from_utf8` instead of `std::str::from_utf8`.
pub confused_type_with_std_module: FxIndexMap<Span, Span>, pub confused_type_with_std_module: FxIndexMap<Span, Span>,
pub doc_link_resolutions: FxHashMap<LocalDefId, DocLinkResMap>, pub doc_link_resolutions: FxIndexMap<LocalDefId, DocLinkResMap>,
pub doc_link_traits_in_scope: FxHashMap<LocalDefId, Vec<DefId>>, pub doc_link_traits_in_scope: FxIndexMap<LocalDefId, Vec<DefId>>,
pub all_macro_rules: FxHashMap<Symbol, Res<ast::NodeId>>, pub all_macro_rules: FxHashMap<Symbol, Res<ast::NodeId>>,
pub stripped_cfg_items: Steal<Vec<StrippedCfgItem>>, pub stripped_cfg_items: Steal<Vec<StrippedCfgItem>>,
} }

View File

@ -1196,8 +1196,8 @@ pub struct Resolver<'ra, 'tcx> {
stripped_cfg_items: Vec<StrippedCfgItem<NodeId>>, stripped_cfg_items: Vec<StrippedCfgItem<NodeId>>,
effective_visibilities: EffectiveVisibilities, effective_visibilities: EffectiveVisibilities,
doc_link_resolutions: FxHashMap<LocalDefId, DocLinkResMap>, doc_link_resolutions: FxIndexMap<LocalDefId, DocLinkResMap>,
doc_link_traits_in_scope: FxHashMap<LocalDefId, Vec<DefId>>, doc_link_traits_in_scope: FxIndexMap<LocalDefId, Vec<DefId>>,
all_macro_rules: FxHashMap<Symbol, Res>, all_macro_rules: FxHashMap<Symbol, Res>,
/// Invocation ids of all glob delegations. /// Invocation ids of all glob delegations.