@@ -52,6 +52,7 @@ pub enum Annotatable {
5252 Param ( ast:: Param ) ,
5353 FieldDef ( ast:: FieldDef ) ,
5454 Variant ( ast:: Variant ) ,
55+ WherePredicate ( ast:: WherePredicate ) ,
5556 Crate ( ast:: Crate ) ,
5657}
5758
@@ -70,6 +71,7 @@ impl Annotatable {
7071 Annotatable :: Param ( p) => p. span ,
7172 Annotatable :: FieldDef ( sf) => sf. span ,
7273 Annotatable :: Variant ( v) => v. span ,
74+ Annotatable :: WherePredicate ( wp) => wp. span ,
7375 Annotatable :: Crate ( c) => c. spans . inner_span ,
7476 }
7577 }
@@ -88,6 +90,7 @@ impl Annotatable {
8890 Annotatable :: Param ( p) => p. visit_attrs ( f) ,
8991 Annotatable :: FieldDef ( sf) => sf. visit_attrs ( f) ,
9092 Annotatable :: Variant ( v) => v. visit_attrs ( f) ,
93+ Annotatable :: WherePredicate ( wp) => wp. visit_attrs ( f) ,
9194 Annotatable :: Crate ( c) => c. visit_attrs ( f) ,
9295 }
9396 }
@@ -106,6 +109,7 @@ impl Annotatable {
106109 Annotatable :: Param ( p) => visitor. visit_param ( p) ,
107110 Annotatable :: FieldDef ( sf) => visitor. visit_field_def ( sf) ,
108111 Annotatable :: Variant ( v) => visitor. visit_variant ( v) ,
112+ Annotatable :: WherePredicate ( wp) => visitor. visit_where_predicate ( wp) ,
109113 Annotatable :: Crate ( c) => visitor. visit_crate ( c) ,
110114 }
111115 }
@@ -127,6 +131,7 @@ impl Annotatable {
127131 | Annotatable :: Param ( ..)
128132 | Annotatable :: FieldDef ( ..)
129133 | Annotatable :: Variant ( ..)
134+ | Annotatable :: WherePredicate ( ..)
130135 | Annotatable :: Crate ( ..) => panic ! ( "unexpected annotatable" ) ,
131136 }
132137 }
@@ -222,6 +227,13 @@ impl Annotatable {
222227 }
223228 }
224229
230+ pub fn expect_where_predicate ( self ) -> ast:: WherePredicate {
231+ match self {
232+ Annotatable :: WherePredicate ( wp) => wp,
233+ _ => panic ! ( "expected where predicate" ) ,
234+ }
235+ }
236+
225237 pub fn expect_crate ( self ) -> ast:: Crate {
226238 match self {
227239 Annotatable :: Crate ( krate) => krate,
@@ -445,6 +457,10 @@ pub trait MacResult {
445457 None
446458 }
447459
460+ fn make_where_predicates ( self : Box < Self > ) -> Option < SmallVec < [ ast:: WherePredicate ; 1 ] > > {
461+ None
462+ }
463+
448464 fn make_crate ( self : Box < Self > ) -> Option < ast:: Crate > {
449465 // Fn-like macros cannot produce a crate.
450466 unreachable ! ( )
0 commit comments