203
203
//! Empty braces can be omitted as of quick_error 0.1.3.
204
204
//!
205
205
206
+
206
207
/// Main macro that does all the work
207
208
#[ macro_export]
208
209
macro_rules! quick_error {
209
210
( $( #[ $meta: meta] ) *
210
211
pub enum $name: ident { $( $chunks: tt) * }
211
212
) => {
212
213
quick_error!( SORT [ pub enum $name $( #[ $meta] ) * ]
213
- enum [ ] items [ ] buf [ ]
214
+ items [ ] buf [ ]
214
215
queue [ $( $chunks) * ] ) ;
215
216
} ;
216
217
( $( #[ $meta: meta] ) *
217
218
enum $name: ident { $( $chunks: tt) * }
218
219
) => {
219
220
quick_error!( SORT [ enum $name $( #[ $meta] ) * ]
220
- enum [ ] items [ ] buf [ ]
221
+ items [ ] buf [ ]
221
222
queue [ $( $chunks) * ] ) ;
222
223
} ;
223
224
// Queue is empty, can do the work
224
225
( SORT [ enum $name: ident $( #[ $meta: meta] ) * ]
225
- enum [ $( $( #[ $emeta: meta] ) *
226
- => $eitem: ident $( ( $( $etyp: ty) ,* ) ) * ) * ]
227
- items [ $( $iitem: ident $( ( $( $ivar: ident : $ityp: ty) ,* ) ) *
226
+ items [ $( $( #[ $imeta: imeta] ) *
227
+ => $iitem: ident $( ( $( $ivar: ident : $ityp: ty) ,* ) ) *
228
228
{ $( $ifuncs: tt) * } ) * ]
229
229
buf [ ]
230
230
queue [ ]
231
231
) => {
232
232
$( #[ $meta] ) *
233
233
enum $name {
234
234
$(
235
- $( #[ $emeta ] ) *
236
- $eitem $( ( $( $etyp ) ,* ) ) * ,
235
+ $( #[ $imeta ] ) *
236
+ $iitem $( ( $( $ityp ) ,* ) ) * ,
237
237
) *
238
238
}
239
239
quick_error!( IMPLEMENTATIONS $name { $(
@@ -244,18 +244,17 @@ macro_rules! quick_error {
244
244
) *
245
245
} ;
246
246
( SORT [ pub enum $name: ident $( #[ $meta: meta] ) * ]
247
- enum [ $( $( #[ $emeta: meta] ) *
248
- => $eitem: ident $( ( $( $etyp: ty) ,* ) ) * ) * ]
249
- items [ $( $iitem: ident $( ( $( $ivar: ident : $ityp: ty) ,* ) ) *
247
+ items [ $( $( #[ $imeta: meta] ) *
248
+ => $iitem: ident $( ( $( $ivar: ident : $ityp: ty) ,* ) ) *
250
249
{ $( $ifuncs: tt) * } ) * ]
251
250
buf [ ]
252
251
queue [ ]
253
252
) => {
254
253
$( #[ $meta] ) *
255
254
pub enum $name {
256
255
$(
257
- $( #[ $emeta ] ) *
258
- $eitem $( ( $( $etyp ) ,* ) ) * ,
256
+ $( #[ $imeta ] ) *
257
+ $iitem $( ( $( $ityp ) ,* ) ) * ,
259
258
) *
260
259
}
261
260
quick_error!( IMPLEMENTATIONS $name { $(
@@ -267,39 +266,35 @@ macro_rules! quick_error {
267
266
} ;
268
267
// Add meta to buffer
269
268
( SORT [ $( $def: tt) * ]
270
- enum [ $( $( #[ $emeta: meta] ) *
271
- => $eitem: ident $( ( $( $etyp: ty) ,* ) ) * ) * ]
272
- items [ $( $iitem: ident $( ( $( $ivar: ident : $ityp: ty) ,* ) ) *
269
+ items [ $( $( #[ $imeta: meta] ) *
270
+ => $iitem: ident $( ( $( $ivar: ident : $ityp: ty) ,* ) ) *
273
271
{ $( $ifuncs: tt) * } ) * ]
274
272
buf [ $( #[ $bmeta: meta] ) * ]
275
273
queue [ #[ $qmeta: meta] $( $tail: tt) * ]
276
274
) => {
277
275
quick_error!( SORT [ $( $def) * ]
278
- enum [ $( $( #[ $emeta] ) * => $eitem $( ( $( $etyp) ,* ) ) * ) * ]
279
- items [ $( $iitem $( ( $( $ivar: $ityp) ,* ) ) * { $( $ifuncs) * } ) * ]
276
+ items [ $( $( #[ $imeta] ) * => $iitem $( ( $( $ivar: $ityp) ,* ) ) * { $( $ifuncs) * } ) * ]
280
277
buf [ $( #[ $bmeta] ) * #[ $qmeta] ]
281
278
queue [ $( $tail) * ] ) ;
282
279
} ;
283
280
// Add ident to buffer
284
281
( SORT [ $( $def: tt) * ]
285
- enum [ $( $( #[ $emeta: meta] ) *
286
- => $eitem: ident $( ( $( $etyp: ty) ,* ) ) * ) * ]
287
- items [ $( $iitem: ident $( ( $( $ivar: ident : $ityp: ty) ,* ) ) *
282
+ items [ $( $( #[ $imeta: meta] ) *
283
+ => $iitem: ident $( ( $( $ivar: ident : $ityp: ty) ,* ) ) *
288
284
{ $( $ifuncs: tt) * } ) * ]
289
285
buf [ $( #[ $bmeta: meta] ) * ]
290
286
queue [ $qitem: ident $( $tail: tt) * ]
291
287
) => {
292
288
quick_error!( SORT [ $( $def) * ]
293
- enum [ $( $( #[ $emeta ] ) * => $eitem $ ( ( $ ( $etyp ) , * ) ) * ) * ]
294
- items [ $ ( $iitem $( ( $( $ivar: $ityp) ,* ) ) * { $( $ifuncs) * } ) * ]
289
+ items [ $( $( #[ $imeta ] ) *
290
+ => $iitem $( ( $( $ivar: $ityp) ,* ) ) * { $( $ifuncs) * } ) * ]
295
291
buf [ $( #[ $bmeta] ) * => $qitem ]
296
292
queue [ $( $tail) * ] ) ;
297
293
} ;
298
294
// Flush buffer on meta after ident
299
295
( SORT [ $( $def: tt) * ]
300
- enum [ $( $( #[ $emeta: meta] ) *
301
- => $eitem: ident $( ( $( $etyp: ty) ,* ) ) * ) * ]
302
- items [ $( $iitem: ident $( ( $( $ivar: ident : $ityp: ty) ,* ) ) *
296
+ items [ $( $( #[ $imeta: meta] ) *
297
+ => $iitem: ident $( ( $( $ivar: ident : $ityp: ty) ,* ) ) *
303
298
{ $( $ifuncs: tt) * } ) * ]
304
299
buf [ $( #[ $bmeta: meta] ) *
305
300
=> $bitem: ident $( ( $( $bvar: ident : $btyp: ty) ,* ) ) * ]
@@ -308,77 +303,67 @@ macro_rules! quick_error {
308
303
quick_error!( SORT [ $( $def) * ]
309
304
enum [ $( $( #[ $emeta] ) * => $eitem $( ( $( $etyp) ,* ) ) * ) *
310
305
$( #[ $bmeta] ) * => $bitem $( ( $( $btyp) ,* ) ) * ]
311
- items [ $( $iitem $( ( $( $ivar: $ityp) ,* ) ) * { $( $ifuncs) * } ) *
306
+ items [ $( $( #[ $imeta: imeta] ) *
307
+ => $iitem $( ( $( $ivar: $ityp) ,* ) ) * { $( $ifuncs) * } ) *
312
308
$bitem $( ( $( $bvar: $btyp) ,* ) ) * { } ]
313
309
buf [ #[ $qmeta] ]
314
310
queue [ $( $tail) * ] ) ;
315
311
} ;
316
312
// Add parenthesis
317
313
( SORT [ $( $def: tt) * ]
318
- enum [ $( $( #[ $emeta: meta] ) *
319
- => $eitem: ident $( ( $( $etyp: ty) ,* ) ) * ) * ]
320
- items [ $( $iitem: ident $( ( $( $ivar: ident : $ityp: ty) ,* ) ) *
314
+ items [ $( $( #[ $imeta: meta] ) *
315
+ => $iitem: ident $( ( $( $ivar: ident : $ityp: ty) ,* ) ) *
321
316
{ $( $ifuncs: tt) * } ) * ]
322
317
buf [ $( #[ $bmeta: meta] ) * => $bitem: ident ]
323
318
queue [ ( $( $qvar: ident : $qtyp: ty ) ,* ) $( $tail: tt) * ]
324
319
) => {
325
320
quick_error!( SORT [ $( $def) * ]
326
- enum [ $( $( #[ $emeta] ) * => $eitem $( ( $( $etyp) ,* ) ) * ) * ]
327
- items [ $( $iitem $( ( $( $ivar: $ityp) ,* ) ) * { $( $ifuncs) * } ) * ]
321
+ items [ $( $( #[ $imeta] ) * => $iitem $( ( $( $ivar: $ityp) ,* ) ) * { $( $ifuncs) * } ) * ]
328
322
buf [ $( #[ $bmeta] ) * => $bitem ( $( $qvar: $qtyp ) ,* ) ]
329
323
queue [ $( $tail) * ] ) ;
330
324
} ;
331
325
// Add braces and flush always on braces
332
326
( SORT [ $( $def: tt) * ]
333
- enum [ $( $( #[ $emeta: meta] ) *
334
- => $eitem: ident $( ( $( $etyp: ty) ,* ) ) * ) * ]
335
- items [ $( $iitem: ident $( ( $( $ivar: ident : $ityp: ty) ,* ) ) *
327
+ items [ $( $( #[ $imeta: meta] ) *
328
+ => $iitem: ident $( ( $( $ivar: ident : $ityp: ty) ,* ) ) *
336
329
{ $( $ifuncs: tt) * } ) * ]
337
330
buf [ $( #[ $bmeta: meta] ) *
338
331
=> $bitem: ident $( ( $( $bvar: ident : $btyp: ty) ,* ) ) * ]
339
332
queue [ { $( $qfuncs: tt) * } $( $tail: tt) * ]
340
333
) => {
341
334
quick_error!( SORT [ $( $def) * ]
342
- enum [ $( $( #[ $emeta] ) * => $eitem $( ( $( $etyp) ,* ) ) * ) *
343
- $( #[ $bmeta] ) * => $bitem $( ( $( $btyp) ,* ) ) * ]
344
- items [ $( $iitem $( ( $( $ivar: $ityp) ,* ) ) * { $( $ifuncs) * } ) *
345
- $bitem $( ( $( $bvar: $btyp) ,* ) ) * { $( $qfuncs) * } ]
335
+ items [ $( $( #[ $imeta] ) * => $iitem $( ( $( $ivar: $ityp) ,* ) ) * { $( $ifuncs) * } ) *
336
+ $( #[ $bmeta] ) * => $bitem $( ( $( $bvar: $btyp) ,* ) ) * { $( $qfuncs) * } ]
346
337
buf [ ]
347
338
queue [ $( $tail) * ] ) ;
348
339
} ;
349
340
// Flush buffer on double ident
350
341
( SORT [ $( $def: tt) * ]
351
- enum [ $( $( #[ $emeta: meta] ) *
352
- => $eitem: ident $( ( $( $etyp: ty) ,* ) ) * ) * ]
353
- items [ $( $iitem: ident $( ( $( $ivar: ident : $ityp: ty) ,* ) ) *
342
+ items [ $( $( #[ $imeta: meta] ) *
343
+ => $iitem: ident $( ( $( $ivar: ident : $ityp: ty) ,* ) ) *
354
344
{ $( $ifuncs: tt) * } ) * ]
355
345
buf [ $( #[ $bmeta: meta] ) *
356
346
=> $bitem: ident $( ( $( $bvar: ident : $btyp: ty) ,* ) ) * ]
357
347
queue [ $qitem: ident $( $tail: tt) * ]
358
348
) => {
359
349
quick_error!( SORT [ $( $def) * ]
360
- enum [ $( $( #[ $emeta] ) * => $eitem $( ( $( $etyp) ,* ) ) * ) *
361
- $( #[ $bmeta] ) * => $bitem $( ( $( $btyp) ,* ) ) * ]
362
- items [ $( $iitem $( ( $( $ivar: $ityp) ,* ) ) * { $( $ifuncs) * } ) *
363
- $bitem $( ( $( $bvar: $btyp) ,* ) ) * { } ]
350
+ items [ $( $( #[ $imeta] ) * => $iitem $( ( $( $ivar: $ityp) ,* ) ) * { $( $ifuncs) * } ) *
351
+ $( #[ $bmeta] ) * => $bitem $( ( $( $bvar: $btyp) ,* ) ) * { } ]
364
352
buf [ => $qitem ]
365
353
queue [ $( $tail) * ] ) ;
366
354
} ;
367
355
// Flush buffer on end
368
356
( SORT [ $( $def: tt) * ]
369
- enum [ $( $( #[ $emeta: meta] ) *
370
- => $eitem: ident $( ( $( $etyp: ty) ,* ) ) * ) * ]
371
- items [ $( $iitem: ident $( ( $( $ivar: ident : $ityp: ty) ,* ) ) *
357
+ items [ $( $( #[ $imeta: meta] ) *
358
+ => $iitem: ident $( ( $( $ivar: ident : $ityp: ty) ,* ) ) *
372
359
{ $( $ifuncs: tt) * } ) * ]
373
360
buf [ $( #[ $bmeta: meta] ) *
374
361
=> $bitem: ident $( ( $( $bvar: ident : $btyp: ty) ,* ) ) * ]
375
362
queue [ ]
376
363
) => {
377
364
quick_error!( SORT [ $( $def) * ]
378
- enum [ $( $( #[ $emeta] ) * => $eitem $( ( $( $etyp) ,* ) ) * ) *
379
- $( #[ $bmeta] ) * => $bitem $( ( $( $btyp) ,* ) ) * ]
380
- items [ $( $iitem $( ( $( $ivar: $ityp) ,* ) ) * { $( $ifuncs) * } ) *
381
- $bitem $( ( $( $bvar: $btyp) ,* ) ) * { } ]
365
+ items [ $( $( #[ $imeta] ) * => $iitem $( ( $( $ivar: $ityp) ,* ) ) * { $( $ifuncs) * } ) *
366
+ $( #[ $bmeta] ) * => $bitem $( ( $( $bvar: $btyp) ,* ) ) * { } ]
382
367
buf [ ]
383
368
queue [ ] ) ;
384
369
} ;
0 commit comments