@@ -11,7 +11,6 @@ use crate::context::{AcceptContext, Stage};
1111use crate :: parser:: ArgParser ;
1212
1313pub ( crate ) struct SkipDuringMethodDispatchParser ;
14-
1514impl < S : Stage > SingleAttributeParser < S > for SkipDuringMethodDispatchParser {
1615 const PATH : & [ Symbol ] = & [ sym:: rustc_skip_during_method_dispatch] ;
1716 const ATTRIBUTE_ORDER : AttributeOrder = AttributeOrder :: KeepFirst ;
@@ -55,11 +54,27 @@ impl<S: Stage> SingleAttributeParser<S> for SkipDuringMethodDispatchParser {
5554 }
5655}
5756
58- pub ( crate ) struct ConstTraitParser ;
59- impl < S : Stage > NoArgsAttributeParser < S > for ConstTraitParser {
60- const PATH : & [ Symbol ] = & [ sym:: const_trait] ;
57+ pub ( crate ) struct ParenSugarParser ;
58+ impl < S : Stage > NoArgsAttributeParser < S > for ParenSugarParser {
59+ const PATH : & [ Symbol ] = & [ sym:: rustc_paren_sugar] ;
60+ const ON_DUPLICATE : OnDuplicate < S > = OnDuplicate :: Error ;
61+ const CREATE : fn ( Span ) -> AttributeKind = AttributeKind :: ParenSugar ;
62+ }
63+
64+ pub ( crate ) struct TypeConstParser ;
65+ impl < S : Stage > NoArgsAttributeParser < S > for TypeConstParser {
66+ const PATH : & [ Symbol ] = & [ sym:: type_const] ;
67+ const ON_DUPLICATE : OnDuplicate < S > = OnDuplicate :: Error ;
68+ const CREATE : fn ( Span ) -> AttributeKind = AttributeKind :: TypeConst ;
69+ }
70+
71+ // Markers
72+
73+ pub ( crate ) struct MarkerParser ;
74+ impl < S : Stage > NoArgsAttributeParser < S > for MarkerParser {
75+ const PATH : & [ Symbol ] = & [ sym:: marker] ;
6176 const ON_DUPLICATE : OnDuplicate < S > = OnDuplicate :: Warn ;
62- const CREATE : fn ( Span ) -> AttributeKind = AttributeKind :: ConstTrait ;
77+ const CREATE : fn ( Span ) -> AttributeKind = AttributeKind :: Marker ;
6378}
6479
6580pub ( crate ) struct DenyExplicitImplParser ;
@@ -76,20 +91,17 @@ impl<S: Stage> NoArgsAttributeParser<S> for DoNotImplementViaObjectParser {
7691 const CREATE : fn ( Span ) -> AttributeKind = AttributeKind :: DoNotImplementViaObject ;
7792}
7893
79- pub ( crate ) struct CoinductiveParser ;
80- impl < S : Stage > NoArgsAttributeParser < S > for CoinductiveParser {
81- const PATH : & [ Symbol ] = & [ sym:: rustc_coinductive] ;
82- const ON_DUPLICATE : OnDuplicate < S > = OnDuplicate :: Error ;
83- const CREATE : fn ( Span ) -> AttributeKind = AttributeKind :: Coinductive ;
84- }
94+ // Const traits
8595
86- pub ( crate ) struct TypeConstParser ;
87- impl < S : Stage > NoArgsAttributeParser < S > for TypeConstParser {
88- const PATH : & [ Symbol ] = & [ sym:: type_const ] ;
89- const ON_DUPLICATE : OnDuplicate < S > = OnDuplicate :: Error ;
90- const CREATE : fn ( Span ) -> AttributeKind = AttributeKind :: TypeConst ;
96+ pub ( crate ) struct ConstTraitParser ;
97+ impl < S : Stage > NoArgsAttributeParser < S > for ConstTraitParser {
98+ const PATH : & [ Symbol ] = & [ sym:: const_trait ] ;
99+ const ON_DUPLICATE : OnDuplicate < S > = OnDuplicate :: Warn ;
100+ const CREATE : fn ( Span ) -> AttributeKind = AttributeKind :: ConstTrait ;
91101}
92102
103+ // Specialization
104+
93105pub ( crate ) struct SpecializationTraitParser ;
94106impl < S : Stage > NoArgsAttributeParser < S > for SpecializationTraitParser {
95107 const PATH : & [ Symbol ] = & [ sym:: rustc_specialization_trait] ;
@@ -104,11 +116,13 @@ impl<S: Stage> NoArgsAttributeParser<S> for UnsafeSpecializationMarkerParser {
104116 const CREATE : fn ( Span ) -> AttributeKind = AttributeKind :: UnsafeSpecializationMarker ;
105117}
106118
107- pub ( crate ) struct MarkerParser ;
108- impl < S : Stage > NoArgsAttributeParser < S > for MarkerParser {
109- const PATH : & [ Symbol ] = & [ sym:: marker] ;
110- const ON_DUPLICATE : OnDuplicate < S > = OnDuplicate :: Warn ;
111- const CREATE : fn ( Span ) -> AttributeKind = AttributeKind :: Marker ;
119+ // Coherence
120+
121+ pub ( crate ) struct CoinductiveParser ;
122+ impl < S : Stage > NoArgsAttributeParser < S > for CoinductiveParser {
123+ const PATH : & [ Symbol ] = & [ sym:: rustc_coinductive] ;
124+ const ON_DUPLICATE : OnDuplicate < S > = OnDuplicate :: Error ;
125+ const CREATE : fn ( Span ) -> AttributeKind = AttributeKind :: Coinductive ;
112126}
113127
114128pub ( crate ) struct FundamentalParser ;
@@ -117,10 +131,3 @@ impl<S: Stage> NoArgsAttributeParser<S> for FundamentalParser {
117131 const ON_DUPLICATE : OnDuplicate < S > = OnDuplicate :: Error ;
118132 const CREATE : fn ( Span ) -> AttributeKind = |_| AttributeKind :: Fundamental ;
119133}
120-
121- pub ( crate ) struct ParenSugarParser ;
122- impl < S : Stage > NoArgsAttributeParser < S > for ParenSugarParser {
123- const PATH : & [ Symbol ] = & [ sym:: rustc_paren_sugar] ;
124- const ON_DUPLICATE : OnDuplicate < S > = OnDuplicate :: Error ;
125- const CREATE : fn ( Span ) -> AttributeKind = AttributeKind :: ParenSugar ;
126- }
0 commit comments