| use rustc_hir::attrs::AttributeKind; |
| use rustc_span::{Span, Symbol, sym}; |
| |
| use crate::attributes::{NoArgsAttributeParser, OnDuplicate}; |
| use crate::context::Stage; |
| |
| pub(crate) struct AsPtrParser; |
| impl<S: Stage> NoArgsAttributeParser<S> for AsPtrParser { |
| const PATH: &[Symbol] = &[sym::rustc_as_ptr]; |
| const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error; |
| const CREATE: fn(Span) -> AttributeKind = AttributeKind::AsPtr; |
| } |
| |
| pub(crate) struct PubTransparentParser; |
| impl<S: Stage> NoArgsAttributeParser<S> for PubTransparentParser { |
| const PATH: &[Symbol] = &[sym::rustc_pub_transparent]; |
| const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error; |
| const CREATE: fn(Span) -> AttributeKind = AttributeKind::PubTransparent; |
| } |
| |
| pub(crate) struct PassByValueParser; |
| impl<S: Stage> NoArgsAttributeParser<S> for PassByValueParser { |
| const PATH: &[Symbol] = &[sym::rustc_pass_by_value]; |
| const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error; |
| const CREATE: fn(Span) -> AttributeKind = AttributeKind::PassByValue; |
| } |
| |
| pub(crate) struct AutomaticallyDerivedParser; |
| impl<S: Stage> NoArgsAttributeParser<S> for AutomaticallyDerivedParser { |
| const PATH: &[Symbol] = &[sym::automatically_derived]; |
| const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Warn; |
| const CREATE: fn(Span) -> AttributeKind = AttributeKind::AutomaticallyDerived; |
| } |