diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-09-23 04:29:16 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-23 04:29:16 +0200 |
| commit | 695b708311df451739b759b652a17c9e8c94b6c8 (patch) | |
| tree | 43b0ca041bdcc9e79f35942e8410027b5c392e83 | |
| parent | c2d2535b8427845634d503cc8f75595d296f1268 (diff) | |
| parent | 6a47326a0452cc8d5cb57676508b5469d648c67f (diff) | |
| download | rust-695b708311df451739b759b652a17c9e8c94b6c8.tar.gz rust-695b708311df451739b759b652a17c9e8c94b6c8.zip | |
Rollup merge of #101815 - diegooliveira:master, r=davidtwco
Migrated the rustc_passes annotation without effect diagnostic infrastructure Small change to move the validation for annotations to the new diagnostic infrastructure.
| -rw-r--r-- | compiler/rustc_error_messages/locales/en-US/passes.ftl | 3 | ||||
| -rw-r--r-- | compiler/rustc_passes/src/errors.rs | 7 | ||||
| -rw-r--r-- | compiler/rustc_passes/src/stability.rs | 17 |
3 files changed, 17 insertions, 10 deletions
diff --git a/compiler/rustc_error_messages/locales/en-US/passes.ftl b/compiler/rustc_error_messages/locales/en-US/passes.ftl index 556a6452f1a..995ad4fe258 100644 --- a/compiler/rustc_error_messages/locales/en-US/passes.ftl +++ b/compiler/rustc_error_messages/locales/en-US/passes.ftl @@ -268,3 +268,6 @@ passes_link_ordinal = attribute should be applied to a foreign function or stati passes_collapse_debuginfo = `collapse_debuginfo` attribute should be applied to macro definitions .label = not a macro definition + +passes_deprecated_annotation_has_no_effect = this `#[deprecated]` annotation has no effect + .suggestion = remove the unnecessary deprecation attribute diff --git a/compiler/rustc_passes/src/errors.rs b/compiler/rustc_passes/src/errors.rs index be67c9e3b82..cdfa7cf7f93 100644 --- a/compiler/rustc_passes/src/errors.rs +++ b/compiler/rustc_passes/src/errors.rs @@ -658,3 +658,10 @@ pub struct CollapseDebuginfo { #[label] pub defn_span: Span, } + +#[derive(LintDiagnostic)] +#[diag(passes::deprecated_annotation_has_no_effect)] +pub struct DeprecatedAnnotationHasNoEffect { + #[suggestion(applicability = "machine-applicable", code = "")] + pub span: Span, +} diff --git a/compiler/rustc_passes/src/stability.rs b/compiler/rustc_passes/src/stability.rs index 9ba1276099d..3f23b027aef 100644 --- a/compiler/rustc_passes/src/stability.rs +++ b/compiler/rustc_passes/src/stability.rs @@ -1,6 +1,7 @@ //! A pass that annotates every item and method with its stability level, //! propagating default levels lexically from parent to children ast nodes. +use crate::errors; use rustc_attr::{ self as attr, rust_version_symbol, ConstStability, Stability, StabilityLevel, Unstable, UnstableReason, VERSION_PLACEHOLDER, @@ -122,16 +123,12 @@ impl<'a, 'tcx> Annotator<'a, 'tcx> { if kind == AnnotationKind::Prohibited || kind == AnnotationKind::DeprecationProhibited { let hir_id = self.tcx.hir().local_def_id_to_hir_id(def_id); - self.tcx.struct_span_lint_hir(USELESS_DEPRECATED, hir_id, *span, |lint| { - lint.build("this `#[deprecated]` annotation has no effect") - .span_suggestion_short( - *span, - "remove the unnecessary deprecation attribute", - "", - rustc_errors::Applicability::MachineApplicable, - ) - .emit(); - }); + self.tcx.emit_spanned_lint( + USELESS_DEPRECATED, + hir_id, + *span, + errors::DeprecatedAnnotationHasNoEffect { span: *span }, + ); } // `Deprecation` is just two pointers, no need to intern it |
