Auto merge of #118870 - Enselic:rustc_passes-query-stability, r=compiler-errors
rustc_passes: Enforce `rustc::potential_query_instability` lint Stop allowing `rustc::potential_query_instability` in all of `rustc_passes` and instead allow it on a case-by-case basis if it is safe. In this case, all instances of the lint are safe to allow. Part of https://github.com/rust-lang/rust/issues/84447 which is E-help-wanted.
This commit is contained in:
commit
c3def263a4
@ -83,6 +83,9 @@ fn all_diagnostic_items(tcx: TyCtxt<'_>, (): ()) -> DiagnosticItems {
|
|||||||
|
|
||||||
// Collect diagnostic items in other crates.
|
// Collect diagnostic items in other crates.
|
||||||
for &cnum in tcx.crates(()).iter().chain(std::iter::once(&LOCAL_CRATE)) {
|
for &cnum in tcx.crates(()).iter().chain(std::iter::once(&LOCAL_CRATE)) {
|
||||||
|
// We are collecting many DiagnosticItems hash maps into one
|
||||||
|
// DiagnosticItems hash map. The iteration order does not matter.
|
||||||
|
#[allow(rustc::potential_query_instability)]
|
||||||
for (&name, &def_id) in &tcx.diagnostic_items(cnum).name_to_id {
|
for (&name, &def_id) in &tcx.diagnostic_items(cnum).name_to_id {
|
||||||
collect_item(tcx, &mut items, name, def_id);
|
collect_item(tcx, &mut items, name, def_id);
|
||||||
}
|
}
|
||||||
|
@ -121,6 +121,8 @@ fn record_inner<T>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn print(&self, title: &str, prefix: &str) {
|
fn print(&self, title: &str, prefix: &str) {
|
||||||
|
// We will soon sort, so the initial order does not matter.
|
||||||
|
#[allow(rustc::potential_query_instability)]
|
||||||
let mut nodes: Vec<_> = self.nodes.iter().collect();
|
let mut nodes: Vec<_> = self.nodes.iter().collect();
|
||||||
nodes.sort_by_key(|(_, node)| node.stats.count * node.stats.size);
|
nodes.sort_by_key(|(_, node)| node.stats.count * node.stats.size);
|
||||||
|
|
||||||
@ -147,6 +149,8 @@ fn print(&self, title: &str, prefix: &str) {
|
|||||||
to_readable_str(node.stats.size)
|
to_readable_str(node.stats.size)
|
||||||
);
|
);
|
||||||
if !node.subnodes.is_empty() {
|
if !node.subnodes.is_empty() {
|
||||||
|
// We will soon sort, so the initial order does not matter.
|
||||||
|
#[allow(rustc::potential_query_instability)]
|
||||||
let mut subnodes: Vec<_> = node.subnodes.iter().collect();
|
let mut subnodes: Vec<_> = node.subnodes.iter().collect();
|
||||||
subnodes.sort_by_key(|(_, subnode)| subnode.count * subnode.size);
|
subnodes.sort_by_key(|(_, subnode)| subnode.count * subnode.size);
|
||||||
|
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
//!
|
//!
|
||||||
//! This API is completely unstable and subject to change.
|
//! This API is completely unstable and subject to change.
|
||||||
|
|
||||||
#![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(rustdoc_internals)]
|
#![feature(rustdoc_internals)]
|
||||||
|
@ -1048,6 +1048,9 @@ fn check_features<'tcx>(
|
|||||||
tcx.sess.emit_err(errors::UnknownFeature { span, feature: *feature });
|
tcx.sess.emit_err(errors::UnknownFeature { span, feature: *feature });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We only use the hash map contents to emit errors, and the order of
|
||||||
|
// emitted errors do not affect query stability.
|
||||||
|
#[allow(rustc::potential_query_instability)]
|
||||||
for (implied_by, feature) in remaining_implications {
|
for (implied_by, feature) in remaining_implications {
|
||||||
let local_defined_features = tcx.lib_features(LOCAL_CRATE);
|
let local_defined_features = tcx.lib_features(LOCAL_CRATE);
|
||||||
let span = local_defined_features
|
let span = local_defined_features
|
||||||
|
Loading…
Reference in New Issue
Block a user