rustc_attr_parsing/attributes/
semantics.rs

1use rustc_attr_data_structures::AttributeKind;
2use rustc_feature::{AttributeTemplate, template};
3use rustc_span::{Symbol, sym};
4
5use crate::attributes::{AttributeOrder, OnDuplicate, SingleAttributeParser};
6use crate::context::{AcceptContext, Stage};
7use crate::parser::ArgParser;
8
9pub(crate) struct MayDangleParser;
10impl<S: Stage> SingleAttributeParser<S> for MayDangleParser {
11    const PATH: &[Symbol] = &[sym::may_dangle];
12    const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepFirst;
13    const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Warn;
14    const TEMPLATE: AttributeTemplate = template!(Word);
15
16    fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> {
17        if let Err(span) = args.no_args() {
18            cx.expected_no_args(span);
19        }
20        Some(AttributeKind::MayDangle(cx.attr_span))
21    }
22}