rustc_lint: Enforce rustc::potential_query_instability lint

Stop allowing `rustc::potential_query_instability` on all of
`rustc_lint` and instead allow it on a case-by-case basis if it is safe
to do so. In this particular crate, all lints were safe to allow.
This commit is contained in:
Martin Nordholts 2023-12-23 14:30:54 +01:00
parent 231dbbcb6a
commit 295d6003ac
4 changed files with 13 additions and 1 deletions

View File

@ -430,6 +430,8 @@ fn no_lint_suggestion(&self, lint_name: &str) -> CheckLintNameResult<'_> {
// Note: find_best_match_for_name depends on the sort order of its input vector.
// To ensure deterministic output, sort elements of the lint_groups hash map.
// Also, never suggest deprecated lint groups.
// We will soon sort, so the initial order does not matter.
#[allow(rustc::potential_query_instability)]
let mut groups: Vec<_> = self
.lint_groups
.iter()

View File

@ -197,6 +197,8 @@ pub(super) fn builtin(
if let Some(ExpectedValues::Some(best_match_values)) =
sess.parse_sess.check_config.expecteds.get(&best_match)
{
// We will soon sort, so the initial order does not matter.
#[allow(rustc::potential_query_instability)]
let mut possibilities =
best_match_values.iter().flatten().map(Symbol::as_str).collect::<Vec<_>>();
possibilities.sort();
@ -298,6 +300,9 @@ pub(super) fn builtin(
);
};
let mut have_none_possibility = false;
// We later sort possibilities if it is not empty, so the
// order here does not matter.
#[allow(rustc::potential_query_instability)]
let possibilities: Vec<Symbol> = values
.iter()
.inspect(|a| have_none_possibility |= a.is_none())

View File

@ -25,7 +25,6 @@
//!
//! 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(rust_logo)]
#![feature(rustdoc_internals)]

View File

@ -174,6 +174,8 @@ fn check_crate(&mut self, cx: &EarlyContext<'_>, _: &ast::Crate) {
// Sort by `Span` so that error messages make sense with respect to the
// order of identifier locations in the code.
// We will soon sort, so the initial order does not matter.
#[allow(rustc::potential_query_instability)]
let mut symbols: Vec<_> = symbols.iter().collect();
symbols.sort_by_key(|k| k.1);
@ -287,6 +289,8 @@ enum ScriptSetUsage {
}
if has_suspicious {
// The end result is put in `lint_reports` which is sorted.
#[allow(rustc::potential_query_instability)]
let verified_augmented_script_sets = script_states
.iter()
.flat_map(|(k, v)| match v {
@ -299,6 +303,8 @@ enum ScriptSetUsage {
let mut lint_reports: BTreeMap<(Span, Vec<char>), AugmentedScriptSet> =
BTreeMap::new();
// The end result is put in `lint_reports` which is sorted.
#[allow(rustc::potential_query_instability)]
'outerloop: for (augment_script_set, usage) in script_states {
let ScriptSetUsage::Suspicious(mut ch_list, sp) = usage else { continue };