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.
This commit is contained in:
commit
695b708311
@ -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
|
||||
|
@ -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,
|
||||
}
|
||||
|
@ -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 @@ fn annotate<F>(
|
||||
|
||||
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(
|
||||
self.tcx.emit_spanned_lint(
|
||||
USELESS_DEPRECATED,
|
||||
hir_id,
|
||||
*span,
|
||||
"remove the unnecessary deprecation attribute",
|
||||
"",
|
||||
rustc_errors::Applicability::MachineApplicable,
|
||||
)
|
||||
.emit();
|
||||
});
|
||||
errors::DeprecatedAnnotationHasNoEffect { span: *span },
|
||||
);
|
||||
}
|
||||
|
||||
// `Deprecation` is just two pointers, no need to intern it
|
||||
|
Loading…
Reference in New Issue
Block a user