Skip to main content

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}