@@ -153,74 +153,7 @@ fn debug_variant_with_attr(
153
153
}
154
154
155
155
stream. extend ( match op {
156
- spec:: FormalitySpecSymbol :: Field {
157
- name,
158
- mode : FieldMode :: Single | FieldMode :: Optional ,
159
- } => {
160
- quote_spanned ! {
161
- name. span( ) =>
162
- write!( fmt, "{}" , sep) ?;
163
- write!( fmt, "{:?}" , #name) ?;
164
- sep = " " ;
165
- }
166
- }
167
-
168
- spec:: FormalitySpecSymbol :: Field {
169
- name,
170
- mode : FieldMode :: Many ,
171
- } => {
172
- quote_spanned ! {
173
- name. span( ) =>
174
- for e in #name {
175
- write!( fmt, "{}" , sep) ?;
176
- write!( fmt, "{:?}" , e) ?;
177
- sep = " " ;
178
- }
179
- }
180
- }
181
-
182
- spec:: FormalitySpecSymbol :: Field {
183
- name,
184
- mode : FieldMode :: Comma ,
185
- } => {
186
- quote_spanned ! {
187
- name. span( ) =>
188
- for e in #name {
189
- write!( fmt, "{}" , sep) ?;
190
- write!( fmt, "{:?}" , e) ?;
191
- sep = ", " ;
192
- }
193
- sep = " " ;
194
- }
195
- }
196
-
197
- spec:: FormalitySpecSymbol :: Field {
198
- name,
199
- mode :
200
- FieldMode :: DelimitedVec {
201
- open,
202
- optional,
203
- close,
204
- } ,
205
- } => {
206
- let open = Literal :: character ( * open) ;
207
- let close = Literal :: character ( * close) ;
208
- quote_spanned ! {
209
- name. span( ) =>
210
- if !#optional || !#name. is_empty( ) {
211
- write!( fmt, "{}" , sep) ?;
212
- write!( fmt, "{}" , #open) ?;
213
- sep = "" ;
214
- for e in #name {
215
- write!( fmt, "{}" , sep) ?;
216
- write!( fmt, "{:?}" , e) ?;
217
- sep = ", " ;
218
- }
219
- write!( fmt, "{}" , #close) ?;
220
- sep = " " ;
221
- }
222
- }
223
- }
156
+ spec:: FormalitySpecSymbol :: Field { name, mode } => debug_field_with_mode ( name, mode) ,
224
157
225
158
spec:: FormalitySpecSymbol :: Keyword { ident } => {
226
159
let literal = as_literal ( ident) ;
@@ -270,6 +203,62 @@ fn debug_variant_with_attr(
270
203
stream
271
204
}
272
205
206
+ fn debug_field_with_mode ( name : & Ident , mode : & FieldMode ) -> TokenStream {
207
+ match mode {
208
+ FieldMode :: Single | FieldMode :: Optional => {
209
+ quote_spanned ! { name. span( ) =>
210
+ write!( fmt, "{}" , sep) ?;
211
+ write!( fmt, "{:?}" , #name) ?;
212
+ sep = " " ;
213
+ }
214
+ }
215
+
216
+ FieldMode :: Many => {
217
+ quote_spanned ! { name. span( ) =>
218
+ for e in #name {
219
+ write!( fmt, "{}" , sep) ?;
220
+ write!( fmt, "{:?}" , e) ?;
221
+ sep = " " ;
222
+ }
223
+ }
224
+ }
225
+
226
+ FieldMode :: Comma => {
227
+ quote_spanned ! { name. span( ) =>
228
+ for e in #name {
229
+ write!( fmt, "{}" , sep) ?;
230
+ write!( fmt, "{:?}" , e) ?;
231
+ sep = ", " ;
232
+ }
233
+ sep = " " ;
234
+ }
235
+ }
236
+
237
+ FieldMode :: DelimitedVec {
238
+ open,
239
+ optional,
240
+ close,
241
+ } => {
242
+ let open = Literal :: character ( * open) ;
243
+ let close = Literal :: character ( * close) ;
244
+ quote_spanned ! { name. span( ) =>
245
+ if !#optional || !#name. is_empty( ) {
246
+ write!( fmt, "{}" , sep) ?;
247
+ write!( fmt, "{}" , #open) ?;
248
+ sep = "" ;
249
+ for e in #name {
250
+ write!( fmt, "{}" , sep) ?;
251
+ write!( fmt, "{:?}" , e) ?;
252
+ sep = ", " ;
253
+ }
254
+ write!( fmt, "{}" , #close) ?;
255
+ sep = " " ;
256
+ }
257
+ }
258
+ }
259
+ }
260
+ }
261
+
273
262
fn get_grammar_attr ( attrs : & [ Attribute ] ) -> Option < syn:: Result < FormalitySpec > > {
274
263
let attr = attrs. iter ( ) . find ( |a| a. path ( ) . is_ident ( "grammar" ) ) ?;
275
264
Some ( attr. parse_args ( ) )
0 commit comments