rustc_attr_parsing/attributes/no_link.rs
1use rustc_feature::AttributeStability;
2use rustc_lint_defs::builtin::NO_LINK_ATTRIBUTES;
3
4use super::prelude::*;
5use crate::diagnostics::NoLinkAttrUsed;
6
7pub(crate) struct NoLinkParser;
8impl NoArgsAttributeParser for NoLinkParser {
9 const PATH: &[Symbol] = &[sym::no_link];
10 const ON_DUPLICATE: OnDuplicate = OnDuplicate::Warn;
11 const ALLOWED_TARGETS: AllowedTargets<'_> = AllowedTargets::AllowList(&[
12 Allow(Target::ExternCrate),
13 Warn(Target::Field),
14 Warn(Target::Arm),
15 Warn(Target::MacroDef),
16 ]);
17 const STABILITY: AttributeStability = AttributeStability::Stable;
18 const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::NoLink;
19
20 fn finalize_check(cx: &mut FinalizeCheckContext<'_, '_>, attr_span: Span) {
21 cx.emit_lint(NO_LINK_ATTRIBUTES, NoLinkAttrUsed, attr_span);
22 }
23}