]>
git.proxmox.com Git - rustc.git/blob - src/test/run-pass/macros/macro-follow.rs
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
) => {}
;