rustc_attr_parsing/attributes/lint_helpers.rs
1use rustc_attr_data_structures::AttributeKind;
2use rustc_span::{Span, Symbol, sym};
3
4use crate::attributes::{NoArgsAttributeParser, OnDuplicate};
5use crate::context::Stage;
6
7pub(crate) struct AsPtrParser;
8impl<S: Stage> NoArgsAttributeParser<S> for AsPtrParser {
9 const PATH: &[Symbol] = &[sym::rustc_as_ptr];
10 const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
11 const CREATE: fn(Span) -> AttributeKind = AttributeKind::AsPtr;
12}
13
14pub(crate) struct PubTransparentParser;
15impl<S: Stage> NoArgsAttributeParser<S> for PubTransparentParser {
16 const PATH: &[Symbol] = &[sym::rustc_pub_transparent];
17 const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
18 const CREATE: fn(Span) -> AttributeKind = AttributeKind::PubTransparent;
19}
20
21pub(crate) struct PassByValueParser;
22impl<S: Stage> NoArgsAttributeParser<S> for PassByValueParser {
23 const PATH: &[Symbol] = &[sym::rustc_pass_by_value];
24 const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
25 const CREATE: fn(Span) -> AttributeKind = AttributeKind::PassByValue;
26}