Skip to main content

rustc_attr_parsing/attributes/
dummy.rs

1use 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); // Anything, really
17    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}