@@ -53,6 +53,7 @@ pub enum Annotatable {
53
53
Param ( ast:: Param ) ,
54
54
FieldDef ( ast:: FieldDef ) ,
55
55
Variant ( ast:: Variant ) ,
56
+ WherePredicate ( ast:: WherePredicate ) ,
56
57
Crate ( ast:: Crate ) ,
57
58
}
58
59
@@ -71,6 +72,7 @@ impl Annotatable {
71
72
Annotatable :: Param ( p) => p. span ,
72
73
Annotatable :: FieldDef ( sf) => sf. span ,
73
74
Annotatable :: Variant ( v) => v. span ,
75
+ Annotatable :: WherePredicate ( wp) => wp. span ,
74
76
Annotatable :: Crate ( c) => c. spans . inner_span ,
75
77
}
76
78
}
@@ -89,6 +91,7 @@ impl Annotatable {
89
91
Annotatable :: Param ( p) => p. visit_attrs ( f) ,
90
92
Annotatable :: FieldDef ( sf) => sf. visit_attrs ( f) ,
91
93
Annotatable :: Variant ( v) => v. visit_attrs ( f) ,
94
+ Annotatable :: WherePredicate ( wp) => wp. visit_attrs ( f) ,
92
95
Annotatable :: Crate ( c) => c. visit_attrs ( f) ,
93
96
}
94
97
}
@@ -107,6 +110,7 @@ impl Annotatable {
107
110
Annotatable :: Param ( p) => visitor. visit_param ( p) ,
108
111
Annotatable :: FieldDef ( sf) => visitor. visit_field_def ( sf) ,
109
112
Annotatable :: Variant ( v) => visitor. visit_variant ( v) ,
113
+ Annotatable :: WherePredicate ( wp) => visitor. visit_where_predicate ( wp) ,
110
114
Annotatable :: Crate ( c) => visitor. visit_crate ( c) ,
111
115
}
112
116
}
@@ -128,6 +132,7 @@ impl Annotatable {
128
132
| Annotatable :: Param ( ..)
129
133
| Annotatable :: FieldDef ( ..)
130
134
| Annotatable :: Variant ( ..)
135
+ | Annotatable :: WherePredicate ( ..)
131
136
| Annotatable :: Crate ( ..) => panic ! ( "unexpected annotatable" ) ,
132
137
}
133
138
}
@@ -223,6 +228,13 @@ impl Annotatable {
223
228
}
224
229
}
225
230
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
+
226
238
pub fn expect_crate ( self ) -> ast:: Crate {
227
239
match self {
228
240
Annotatable :: Crate ( krate) => krate,
@@ -446,6 +458,10 @@ pub trait MacResult {
446
458
None
447
459
}
448
460
461
+ fn make_where_predicates ( self : Box < Self > ) -> Option < SmallVec < [ ast:: WherePredicate ; 1 ] > > {
462
+ None
463
+ }
464
+
449
465
fn make_crate ( self : Box < Self > ) -> Option < ast:: Crate > {
450
466
// Fn-like macros cannot produce a crate.
451
467
unreachable ! ( )
0 commit comments