Handle rustc_query_system cases of rustc::potential_query_instability lint

This commit is contained in:
ismailarilik
2025-05-05 19:06:15 +03:00
parent 414482f6a0
commit 85efae7302
4 changed files with 9 additions and 1 deletions

View File

@@ -1433,6 +1433,8 @@ fn panic_on_forbidden_read<D: Deps>(data: &DepGraphData<D>, dep_node_index: DepN
&& let Some(nodes) = &data.current.nodes_in_current_session && let Some(nodes) = &data.current.nodes_in_current_session
{ {
// Try to find it among the nodes allocated so far in this session // Try to find it among the nodes allocated so far in this session
// This is OK, there's only ever one node result possible so this is deterministic.
#[allow(rustc::potential_query_instability)]
if let Some((node, _)) = nodes.lock().iter().find(|&(_, index)| *index == dep_node_index) { if let Some((node, _)) = nodes.lock().iter().find(|&(_, index)| *index == dep_node_index) {
dep_node = Some(*node); dep_node = Some(*node);
} }

View File

@@ -784,6 +784,8 @@ impl<D: Deps> EncoderState<D> {
) { ) {
if let Some(record_stats) = &self.stats { if let Some(record_stats) = &self.stats {
let record_stats = record_stats.lock(); let record_stats = record_stats.lock();
// `stats` is sorted below so we can allow this lint here.
#[allow(rustc::potential_query_instability)]
let mut stats: Vec<_> = record_stats.values().collect(); let mut stats: Vec<_> = record_stats.values().collect();
stats.sort_by_key(|s| -(s.node_counter as i64)); stats.sort_by_key(|s| -(s.node_counter as i64));

View File

@@ -1,5 +1,5 @@
// tidy-alphabetical-start // tidy-alphabetical-start
#![allow(rustc::potential_query_instability, internal_features)] #![allow(internal_features)]
#![feature(assert_matches)] #![feature(assert_matches)]
#![feature(core_intrinsics)] #![feature(core_intrinsics)]
#![feature(dropck_eyepatch)] #![feature(dropck_eyepatch)]

View File

@@ -510,6 +510,10 @@ pub fn break_query_cycles<I: Clone + Debug>(
registry: &rayon_core::Registry, registry: &rayon_core::Registry,
) { ) {
let mut wakelist = Vec::new(); let mut wakelist = Vec::new();
// It is OK per the comments:
// - https://github.com/rust-lang/rust/pull/131200#issuecomment-2798854932
// - https://github.com/rust-lang/rust/pull/131200#issuecomment-2798866392
#[allow(rustc::potential_query_instability)]
let mut jobs: Vec<QueryJobId> = query_map.keys().cloned().collect(); let mut jobs: Vec<QueryJobId> = query_map.keys().cloned().collect();
let mut found_cycle = false; let mut found_cycle = false;