Skip to content

Commit

Permalink
rustc_lint: Enforce rustc::potential_query_instability lint
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Enselic committed Dec 31, 2023
1 parent 231dbbc commit 295d600
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 1 deletion.
2 changes: 2 additions & 0 deletions compiler/rustc_lint/src/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,8 @@ impl LintStore {
// 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()
Expand Down
5 changes: 5 additions & 0 deletions compiler/rustc_lint/src/context/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -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())
Expand Down
1 change: 0 additions & 1 deletion compiler/rustc_lint/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)]
Expand Down
6 changes: 6 additions & 0 deletions compiler/rustc_lint/src/non_ascii_idents.rs
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,8 @@ impl EarlyLintPass for NonAsciiIdents {

// 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);

Expand Down Expand Up @@ -287,6 +289,8 @@ impl EarlyLintPass for NonAsciiIdents {
}

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 {
Expand All @@ -299,6 +303,8 @@ impl EarlyLintPass for NonAsciiIdents {
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 };

Expand Down

0 comments on commit 295d600

Please sign in to comment.