Skip to content

Commit 37dcff8

Browse files
committed
refactor and simplify
1 parent 2cad7c5 commit 37dcff8

File tree

1 file changed

+37
-52
lines changed

1 file changed

+37
-52
lines changed

src/lib.rs

Lines changed: 37 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -203,37 +203,37 @@
203203
//! Empty braces can be omitted as of quick_error 0.1.3.
204204
//!
205205
206+
206207
/// Main macro that does all the work
207208
#[macro_export]
208209
macro_rules! quick_error {
209210
( $(#[$meta:meta])*
210211
pub enum $name:ident { $($chunks:tt)* }
211212
) => {
212213
quick_error!(SORT [pub enum $name $(#[$meta])* ]
213-
enum [] items [] buf []
214+
items [] buf []
214215
queue [ $($chunks)* ]);
215216
};
216217
( $(#[$meta:meta])*
217218
enum $name:ident { $($chunks:tt)* }
218219
) => {
219220
quick_error!(SORT [enum $name $(#[$meta])* ]
220-
enum [] items [] buf []
221+
items [] buf []
221222
queue [ $($chunks)* ]);
222223
};
223224
// Queue is empty, can do the work
224225
(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),* ))*
228228
{ $($ifuncs:tt)* } )* ]
229229
buf [ ]
230230
queue [ ]
231231
) => {
232232
$(#[$meta])*
233233
enum $name {
234234
$(
235-
$(#[$emeta])*
236-
$eitem $(( $($etyp),* ))*,
235+
$(#[$imeta])*
236+
$iitem $(( $($ityp),* ))*,
237237
)*
238238
}
239239
quick_error!(IMPLEMENTATIONS $name { $(
@@ -244,18 +244,17 @@ macro_rules! quick_error {
244244
)*
245245
};
246246
(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),* ))*
250249
{ $($ifuncs:tt)* } )* ]
251250
buf [ ]
252251
queue [ ]
253252
) => {
254253
$(#[$meta])*
255254
pub enum $name {
256255
$(
257-
$(#[$emeta])*
258-
$eitem $(( $($etyp),* ))*,
256+
$(#[$imeta])*
257+
$iitem $(( $($ityp),* ))*,
259258
)*
260259
}
261260
quick_error!(IMPLEMENTATIONS $name { $(
@@ -267,39 +266,35 @@ macro_rules! quick_error {
267266
};
268267
// Add meta to buffer
269268
(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),* ))*
273271
{ $($ifuncs:tt)* } )* ]
274272
buf [ $( #[$bmeta:meta] )* ]
275273
queue [ #[$qmeta:meta] $($tail:tt)* ]
276274
) => {
277275
quick_error!(SORT [$($def)* ]
278-
enum [$( $(#[$emeta])* => $eitem $(( $($etyp),* ))* )*]
279-
items [ $( $iitem $(( $($ivar:$ityp),* ))* { $($ifuncs)* } )* ]
276+
items [$( $(#[$imeta])* => $iitem $(( $($ivar:$ityp),* ))* { $($ifuncs)* } )* ]
280277
buf [ $( #[$bmeta] )* #[$qmeta] ]
281278
queue [ $($tail)* ]);
282279
};
283280
// Add ident to buffer
284281
(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),* ))*
288284
{ $($ifuncs:tt)* } )* ]
289285
buf [ $( #[$bmeta:meta] )* ]
290286
queue [ $qitem:ident $($tail:tt)* ]
291287
) => {
292288
quick_error!(SORT [$($def)* ]
293-
enum [ $( $(#[$emeta])* => $eitem $(( $($etyp),* ))* )* ]
294-
items [ $( $iitem $(( $($ivar:$ityp),* ))* { $($ifuncs)* } )* ]
289+
items [ $( $(#[$imeta])*
290+
=> $iitem $(( $($ivar:$ityp),* ))* { $($ifuncs)* } )* ]
295291
buf [ $(#[$bmeta])* => $qitem ]
296292
queue [ $($tail)* ]);
297293
};
298294
// Flush buffer on meta after ident
299295
(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),* ))*
303298
{ $($ifuncs:tt)* } )* ]
304299
buf [ $( #[$bmeta:meta] )*
305300
=> $bitem:ident $(( $($bvar:ident : $btyp:ty),* ))* ]
@@ -308,77 +303,67 @@ macro_rules! quick_error {
308303
quick_error!(SORT [$($def)* ]
309304
enum [$( $(#[$emeta])* => $eitem $(( $($etyp),* ))* )*
310305
$(#[$bmeta])* => $bitem $(( $($btyp),* ))*]
311-
items [ $( $iitem $(( $($ivar:$ityp),* ))* { $($ifuncs)* } )*
306+
items [ $( $(#[$imeta:imeta])*
307+
=> $iitem $(( $($ivar:$ityp),* ))* { $($ifuncs)* } )*
312308
$bitem $(( $($bvar:$btyp),* ))* {} ]
313309
buf [ #[$qmeta] ]
314310
queue [ $($tail)* ]);
315311
};
316312
// Add parenthesis
317313
(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),* ))*
321316
{ $($ifuncs:tt)* } )* ]
322317
buf [ $( #[$bmeta:meta] )* => $bitem:ident ]
323318
queue [ ( $( $qvar:ident : $qtyp:ty ),* ) $($tail:tt)* ]
324319
) => {
325320
quick_error!(SORT [$($def)* ]
326-
enum [$( $(#[$emeta])* => $eitem $(( $($etyp),* ))* )*]
327-
items [ $( $iitem $(( $($ivar:$ityp),* ))* { $($ifuncs)* } )* ]
321+
items [$( $(#[$imeta])* => $iitem $(( $($ivar:$ityp),* ))* { $($ifuncs)* } )* ]
328322
buf [ $( #[$bmeta] )* => $bitem ( $( $qvar:$qtyp ),* ) ]
329323
queue [ $($tail)* ]);
330324
};
331325
// Add braces and flush always on braces
332326
(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),* ))*
336329
{ $($ifuncs:tt)* } )* ]
337330
buf [ $( #[$bmeta:meta] )*
338331
=> $bitem:ident $(( $($bvar:ident : $btyp:ty),* ))* ]
339332
queue [ { $($qfuncs:tt)* } $($tail:tt)* ]
340333
) => {
341334
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)* } ]
346337
buf [ ]
347338
queue [ $($tail)* ]);
348339
};
349340
// Flush buffer on double ident
350341
(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),* ))*
354344
{ $($ifuncs:tt)* } )* ]
355345
buf [ $( #[$bmeta:meta] )*
356346
=> $bitem:ident $(( $($bvar:ident : $btyp:ty),* ))* ]
357347
queue [ $qitem:ident $($tail:tt)* ]
358348
) => {
359349
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),* ))* {} ]
364352
buf [ => $qitem ]
365353
queue [ $($tail)* ]);
366354
};
367355
// Flush buffer on end
368356
(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),* ))*
372359
{ $($ifuncs:tt)* } )* ]
373360
buf [ $( #[$bmeta:meta] )*
374361
=> $bitem:ident $(( $($bvar:ident : $btyp:ty),* ))* ]
375362
queue [ ]
376363
) => {
377364
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),* ))* {} ]
382367
buf [ ]
383368
queue [ ]);
384369
};

0 commit comments

Comments
 (0)