diff options
| author | xFrednet <xFrednet@gmail.com> | 2022-03-29 00:10:45 +0200 |
|---|---|---|
| committer | xFrednet <xFrednet@gmail.com> | 2022-05-08 14:37:14 +0200 |
| commit | 2c5e85249f8b10b5fb0caf608d8b2537620285c6 (patch) | |
| tree | 8d3d6e7b8e79d54df8b5eda69dbe45923b666a47 /compiler/rustc_lint/src/expect.rs | |
| parent | 7f03681cd941c7e18ee99549148b8aa6f468d7c2 (diff) | |
| download | rust-2c5e85249f8b10b5fb0caf608d8b2537620285c6.tar.gz rust-2c5e85249f8b10b5fb0caf608d8b2537620285c6.zip | |
Move lint expectation checking into a separate query (RFC 2383)
Diffstat (limited to 'compiler/rustc_lint/src/expect.rs')
| -rw-r--r-- | compiler/rustc_lint/src/expect.rs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/compiler/rustc_lint/src/expect.rs b/compiler/rustc_lint/src/expect.rs index 67f5aa0540f..dc48ac0a618 100644 --- a/compiler/rustc_lint/src/expect.rs +++ b/compiler/rustc_lint/src/expect.rs @@ -1,10 +1,16 @@ use crate::builtin; use rustc_hir::HirId; +use rustc_middle::ty::query::Providers; use rustc_middle::{lint::LintExpectation, ty::TyCtxt}; use rustc_session::lint::LintExpectationId; use rustc_span::symbol::sym; +use rustc_span::Symbol; -pub fn check_expectations(tcx: TyCtxt<'_>) { +pub(crate) fn provide(providers: &mut Providers) { + *providers = Providers { check_expectations, ..*providers }; +} + +fn check_expectations(tcx: TyCtxt<'_>, tool_filter: Option<Symbol>) { if !tcx.sess.features_untracked().enabled(sym::lint_reasons) { return; } @@ -13,7 +19,9 @@ pub fn check_expectations(tcx: TyCtxt<'_>) { let lint_expectations = &tcx.lint_levels(()).lint_expectations; for (id, expectation) in lint_expectations { - if !fulfilled_expectations.contains(id) { + if !fulfilled_expectations.contains(id) + && tool_filter.map_or(true, |filter| expectation.lint_tool == Some(filter)) + { // This check will always be true, since `lint_expectations` only // holds stable ids if let LintExpectationId::Stable { hir_id, .. } = id { |
