@@ -53,6 +53,7 @@ pub enum Annotatable {
5353Param ( ast:: Param ) ,
5454FieldDef ( ast:: FieldDef ) ,
5555Variant ( ast:: Variant ) ,
56+ WherePredicate ( ast:: WherePredicate ) ,
5657Crate ( ast:: Crate ) ,
5758}
5859
@@ -71,6 +72,7 @@ impl Annotatable {
7172Annotatable :: Param ( p) => p. span ,
7273Annotatable :: FieldDef ( sf) => sf. span ,
7374Annotatable :: Variant ( v) => v. span ,
75+ Annotatable :: WherePredicate ( wp) => wp. span ,
7476Annotatable :: Crate ( c) => c. spans . inner_span ,
7577}
7678}
@@ -89,6 +91,7 @@ impl Annotatable {
8991Annotatable :: Param ( p) => p. visit_attrs ( f) ,
9092Annotatable :: FieldDef ( sf) => sf. visit_attrs ( f) ,
9193Annotatable :: Variant ( v) => v. visit_attrs ( f) ,
94+ Annotatable :: WherePredicate ( wp) => wp. visit_attrs ( f) ,
9295Annotatable :: Crate ( c) => c. visit_attrs ( f) ,
9396}
9497}
@@ -107,6 +110,7 @@ impl Annotatable {
107110Annotatable :: Param ( p) => visitor. visit_param ( p) ,
108111Annotatable :: FieldDef ( sf) => visitor. visit_field_def ( sf) ,
109112Annotatable :: Variant ( v) => visitor. visit_variant ( v) ,
113+ Annotatable :: WherePredicate ( wp) => visitor. visit_where_predicate ( wp) ,
110114Annotatable :: Crate ( c) => visitor. visit_crate ( c) ,
111115}
112116}
@@ -128,6 +132,7 @@ impl Annotatable {
128132 | Annotatable :: Param ( ..)
129133 | Annotatable :: FieldDef ( ..)
130134 | Annotatable :: Variant ( ..)
135+ | Annotatable :: WherePredicate ( ..)
131136 | Annotatable :: Crate ( ..) => panic ! ( "unexpected annotatable" ) ,
132137}
133138}
@@ -223,6 +228,13 @@ impl Annotatable {
223228}
224229}
225230
231+ pub fn expect_where_predicate ( self ) -> ast:: WherePredicate {
232+ match self {
233+ Annotatable :: WherePredicate ( wp) => wp,
234+ _ => panic ! ( "expected where predicate" ) ,
235+ }
236+ }
237+
226238pub fn expect_crate ( self ) -> ast:: Crate {
227239match self {
228240Annotatable :: Crate ( krate) => krate,
@@ -446,6 +458,10 @@ pub trait MacResult {
446458None
447459}
448460
461+ fn make_where_predicates ( self : Box < Self > ) -> Option < SmallVec < [ ast:: WherePredicate ; 1 ] > > {
462+ None
463+ }
464+
449465fn make_crate ( self : Box < Self > ) -> Option < ast:: Crate > {
450466// Fn-like macros cannot produce a crate.
451467unreachable ! ( )
0 commit comments