rustc_attr_parsing/attributes/
dummy.rs1use rustc_feature::AttributeStability;
2use rustc_hir::attrs::AttributeKind;
3use rustc_span::{Symbol, sym};
4
5use crate::attributes::{OnDuplicate, SingleAttributeParser};
6use crate::context::AcceptContext;
7use crate::parser::ArgParser;
8use crate::target_checking::AllowedTargets;
9use crate::{AttributeTemplate, template, unstable};
10
11pub(crate) struct RustcDummyParser;
12impl SingleAttributeParser for RustcDummyParser {
13 const PATH: &[Symbol] = &[sym::rustc_dummy];
14 const ON_DUPLICATE: OnDuplicate = OnDuplicate::Ignore;
15 const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::ManuallyChecked;
16 const TEMPLATE: AttributeTemplate = crate::AttributeTemplate {
word: true,
list: None,
one_of: &[],
name_value_str: None,
docs: None,
}template!(Word); const STABILITY: AttributeStability =
18 AttributeStability::Unstable {
gate_name: rustc_span::sym::rustc_attrs,
gate_check: rustc_feature::Features::rustc_attrs,
notes: &["the `#[rustc_dummy]` attribute is used for rustc unit tests"],
}unstable!(rustc_attrs, "the `#[rustc_dummy]` attribute is used for rustc unit tests");
19
20 fn convert(cx: &mut AcceptContext<'_, '_>, args: &ArgParser) -> Option<AttributeKind> {
21 args.ignore_args();
22 cx.ignore_target_checks();
23 Some(AttributeKind::RustcDummy)
24 }
25}