2 #![allow(unused_macros)]
3 // Check the macro follow sets (see corresponding cfail test).
5 // FOLLOW(pat) = {FatArrow, Comma, Eq, Or, Ident(if), Ident(in)}
6 macro_rules! follow_pat {
14 // FOLLOW(expr) = {FatArrow, Comma, Semicolon}
15 macro_rules! follow_expr {
20 // FOLLOW(ty) = {OpenDelim(Brace), Comma, FatArrow, Colon, Eq, Gt, Semi, Or,
21 // Ident(as), Ident(where), OpenDelim(Bracket), Nonterminal(Block)}
22 macro_rules! follow_ty {
34 ($t:ty $b:block) => {};
36 // FOLLOW(stmt) = FOLLOW(expr)
37 macro_rules! follow_stmt {
42 // FOLLOW(path) = FOLLOW(ty)
43 macro_rules! follow_path {
53 ($p:path where) => {};
55 ($p:path $b:block) => {};
57 // FOLLOW(block) = any token
58 macro_rules! follow_block {
70 ($b:block ident) => {};
71 ($b:block $p:pat) => {};
72 ($b:block $e:expr) => {};
73 ($b:block $t:ty) => {};
74 ($b:block $s:stmt) => {};
75 ($b:block $p:path) => {};
76 ($b:block $c:block) => {};
77 ($b:block $i:ident) => {};
78 ($b:block $t:tt) => {};
79 ($b:block $i:item) => {};
80 ($b:block $m:meta) => {};
82 // FOLLOW(ident) = any token
83 macro_rules! follow_ident {
95 ($i:ident ident) => {};
96 ($i:ident $p:pat) => {};
97 ($i:ident $e:expr) => {};
98 ($i:ident $t:ty) => {};
99 ($i:ident $s:stmt) => {};
100 ($i:ident $p:path) => {};
101 ($i:ident $b:block) => {};
102 ($i:ident $j:ident) => {};
103 ($i:ident $t:tt) => {};
104 ($i:ident $j:item) => {};
105 ($i:ident $m:meta) => {};
107 // FOLLOW(tt) = any token
108 macro_rules! follow_tt {
121 ($t:tt $p:pat) => {};
122 ($t:tt $e:expr) => {};
124 ($t:tt $s:stmt) => {};
125 ($t:tt $p:path) => {};
126 ($t:tt $b:block) => {};
127 ($t:tt $i:ident) => {};
129 ($t:tt $i:item) => {};
130 ($t:tt $m:meta) => {};
132 // FOLLOW(item) = any token
133 macro_rules! follow_item {
145 ($i:item ident) => {};
146 ($i:item $p:pat) => {};
147 ($i:item $e:expr) => {};
148 ($i:item $t:ty) => {};
149 ($i:item $s:stmt) => {};
150 ($i:item $p:path) => {};
151 ($i:item $b:block) => {};
152 ($i:item $j:ident) => {};
153 ($i:item $t:tt) => {};
154 ($i:item $j:item) => {};
155 ($i:item $m:meta) => {};
157 // FOLLOW(meta) = any token
158 macro_rules! follow_meta {
170 ($m:meta ident) => {};
171 ($m:meta $p:pat) => {};
172 ($m:meta $e:expr) => {};
173 ($m:meta $t:ty) => {};
174 ($m:meta $s:stmt) => {};
175 ($m:meta $p:path) => {};
176 ($m:meta $b:block) => {};
177 ($m:meta $i:ident) => {};
178 ($m:meta $t:tt) => {};
179 ($m:meta $i:item) => {};
180 ($m:meta $n:meta) => {};