introduce future-compatibility warning for forbidden lint groups
We used to ignore `forbid(group)` scenarios completely. This changed in #78864, but that led to a number of regressions (#80988, #81218). This PR introduces a future compatibility warning for the case where a group is forbidden but then an individual lint within that group is allowed. We now issue a FCW when we see the "allow", but permit it to take effect.
This commit is contained in:
parent
c0b64d97be
commit
b6b897b02c
19 changed files with 554 additions and 54 deletions
|
@ -39,6 +39,7 @@ use rustc_session::SessionLintStore;
|
|||
use rustc_span::lev_distance::find_best_match_for_name;
|
||||
use rustc_span::{symbol::Symbol, MultiSpan, Span, DUMMY_SP};
|
||||
use rustc_target::abi::LayoutOf;
|
||||
use tracing::debug;
|
||||
|
||||
use std::cell::Cell;
|
||||
use std::slice;
|
||||
|
@ -336,6 +337,20 @@ impl LintStore {
|
|||
}
|
||||
}
|
||||
|
||||
/// True if this symbol represents a lint group name.
|
||||
pub fn is_lint_group(&self, lint_name: Symbol) -> bool {
|
||||
debug!(
|
||||
"is_lint_group(lint_name={:?}, lint_groups={:?})",
|
||||
lint_name,
|
||||
self.lint_groups.keys().collect::<Vec<_>>()
|
||||
);
|
||||
let lint_name_str = &*lint_name.as_str();
|
||||
self.lint_groups.contains_key(&lint_name_str) || {
|
||||
let warnings_name_str = crate::WARNINGS.name_lower();
|
||||
lint_name_str == &*warnings_name_str
|
||||
}
|
||||
}
|
||||
|
||||
/// Checks the name of a lint for its existence, and whether it was
|
||||
/// renamed or removed. Generates a DiagnosticBuilder containing a
|
||||
/// warning for renamed and removed lints. This is over both lint
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue