@@ -52,6 +52,7 @@ pub enum Annotatable {
5252 FieldDef ( ast:: FieldDef ) ,
5353 Variant ( ast:: Variant ) ,
5454 Crate ( ast:: Crate ) ,
55+ WherePredicate ( ast:: WherePredicate ) ,
5556}
5657
5758impl Annotatable {
@@ -70,6 +71,7 @@ impl Annotatable {
7071 Annotatable :: FieldDef ( sf) => sf. span ,
7172 Annotatable :: Variant ( v) => v. span ,
7273 Annotatable :: Crate ( c) => c. spans . inner_span ,
74+ Annotatable :: WherePredicate ( wp) => wp. span ,
7375 }
7476 }
7577
@@ -88,6 +90,7 @@ impl Annotatable {
8890 Annotatable :: FieldDef ( sf) => sf. visit_attrs ( f) ,
8991 Annotatable :: Variant ( v) => v. visit_attrs ( f) ,
9092 Annotatable :: Crate ( c) => c. visit_attrs ( f) ,
93+ Annotatable :: WherePredicate ( wp) => wp. visit_attrs ( f) ,
9194 }
9295 }
9396
@@ -106,6 +109,7 @@ impl Annotatable {
106109 Annotatable :: FieldDef ( sf) => visitor. visit_field_def ( sf) ,
107110 Annotatable :: Variant ( v) => visitor. visit_variant ( v) ,
108111 Annotatable :: Crate ( c) => visitor. visit_crate ( c) ,
112+ Annotatable :: WherePredicate ( wp) => visitor. visit_where_predicate ( wp) ,
109113 }
110114 }
111115
@@ -126,7 +130,8 @@ impl Annotatable {
126130 | Annotatable :: Param ( ..)
127131 | Annotatable :: FieldDef ( ..)
128132 | Annotatable :: Variant ( ..)
129- | Annotatable :: Crate ( ..) => panic ! ( "unexpected annotatable" ) ,
133+ | Annotatable :: Crate ( ..)
134+ | Annotatable :: WherePredicate ( ..) => panic ! ( "unexpected annotatable" ) ,
130135 }
131136 }
132137
@@ -227,6 +232,13 @@ impl Annotatable {
227232 _ => panic ! ( "expected krate" ) ,
228233 }
229234 }
235+
236+ pub fn expect_where_predicate ( self ) -> ast:: WherePredicate {
237+ match self {
238+ Annotatable :: WherePredicate ( wp) => wp,
239+ _ => panic ! ( "expected where predicate" ) ,
240+ }
241+ }
230242}
231243
232244/// Result of an expansion that may need to be retried.
@@ -448,6 +460,10 @@ pub trait MacResult {
448460 // Fn-like macros cannot produce a crate.
449461 unreachable ! ( )
450462 }
463+
464+ fn make_where_predicates ( self : Box < Self > ) -> Option < SmallVec < [ ast:: WherePredicate ; 1 ] > > {
465+ None
466+ }
451467}
452468
453469macro_rules! make_MacEager {
0 commit comments