echoes 0.7.0

Find duplicated Rust doctests, functions and contexts
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
[
  {
    "id": "S01_three_alternatives",
    "family": "patterns",
    "a": "fn f(input:u32)->bool{match input{1|2|3=>true,_=>false}}\nfn main(){for input in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "b": "fn f(input:u32)->bool{match input{3|1|2=>true,_=>false}}\nfn main(){for input in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "false\ntrue\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n"
      },
      "b": {
        "exit": 0,
        "stdout": "false\ntrue\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n"
      }
    }
  },
  {
    "id": "S02_suffixed_alternatives",
    "family": "patterns",
    "a": "fn f(input:u32)->bool{match input{2u32|1u32=>true,_=>false}}\nfn main(){for input in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "b": "fn f(input:u32)->bool{match input{1u32|2u32=>true,_=>false}}\nfn main(){for input in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "false\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n"
      },
      "b": {
        "exit": 0,
        "stdout": "false\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n"
      }
    }
  },
  {
    "id": "S03_field_temporaries",
    "family": "fields",
    "a": "struct S{x:u32,y:u32}\nfn f(input:u32)->(u32,u32){let x=input&15u32;let y=input>>4;let s=S{x:x,y:y};(s.x,s.y)}\nfn main(){for input in [0,1,15,16,31,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "b": "struct S{x:u32,y:u32}\nfn f(input:u32)->(u32,u32){let s=S{y:input>>4,x:input&15u32};(s.x,s.y)}\nfn main(){for input in [0,1,15,16,31,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "(0, 0)\n(1, 0)\n(15, 0)\n(0, 1)\n(15, 1)\n(15, 15)\n(15, 4095)\n(15, 268435455)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "(0, 0)\n(1, 0)\n(15, 0)\n(0, 1)\n(15, 1)\n(15, 15)\n(15, 4095)\n(15, 268435455)\n"
      }
    }
  },
  {
    "id": "S04_effectful_fields",
    "family": "fields",
    "a": "fn fx(input:u32)->u32{println!(\"fx\");input&7u32}\nfn fy(input:u32)->u32{println!(\"fy\");input>>4}\nstruct S{x:u32,y:u32}\nfn f(input:u32)->(u32,u32){let s=S{x:fx(input),y:fy(input)};(s.x,s.y)}\nfn main(){for input in [0,1,15,16,31,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "b": "fn fx(input:u32)->u32{println!(\"fx\");input&7u32}\nfn fy(input:u32)->u32{println!(\"fy\");input>>4}\nstruct S{x:u32,y:u32}\nfn f(input:u32)->(u32,u32){let s=S{y:fy(input),x:fx(input)};(s.x,s.y)}\nfn main(){for input in [0,1,15,16,31,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "expected": "different",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "fx\nfy\n(0, 0)\nfx\nfy\n(1, 0)\nfx\nfy\n(7, 0)\nfx\nfy\n(0, 1)\nfx\nfy\n(7, 1)\nfx\nfy\n(7, 15)\nfx\nfy\n(7, 4095)\nfx\nfy\n(7, 268435455)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "fy\nfx\n(0, 0)\nfy\nfx\n(1, 0)\nfy\nfx\n(7, 0)\nfy\nfx\n(0, 1)\nfy\nfx\n(7, 1)\nfy\nfx\n(7, 15)\nfy\nfx\n(7, 4095)\nfy\nfx\n(7, 268435455)\n"
      }
    }
  },
  {
    "id": "S05_panic_field_order",
    "family": "fields",
    "a": "fn px(input:u32)->u32{println!(\"x\");panic!(\"x-init\")}\nfn py(input:u32)->u32{println!(\"y\");panic!(\"y-init\")}\nstruct S{x:u32,y:u32}\nfn f(input:u32)->u32{let s=S{x:px(input),y:py(input)};s.x}\nfn main(){f(1u32);}",
    "b": "fn px(input:u32)->u32{println!(\"x\");panic!(\"x-init\")}\nfn py(input:u32)->u32{println!(\"y\");panic!(\"y-init\")}\nstruct S{x:u32,y:u32}\nfn f(input:u32)->u32{let s=S{y:py(input),x:px(input)};s.x}\nfn main(){f(1u32);}",
    "expected": "different",
    "expect": {
      "a": {
        "exit": 101,
        "stdout": "x\n",
        "stderr": "x-init"
      },
      "b": {
        "exit": 101,
        "stdout": "y\n",
        "stderr": "y-init"
      }
    }
  },
  {
    "id": "S06_update_base_fields",
    "family": "fields",
    "a": "struct S{x:u32,y:u32}\nfn base(input:u32)->S{S{x:input,y:input}}\nfn f(input:u32)->(u32,u32){let s=S{x:input&15u32,y:input>>4,..base(input)};(s.x,s.y)}\nfn main(){for input in [0,1,15,16,31,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "b": "struct S{x:u32,y:u32}\nfn base(input:u32)->S{S{x:input,y:input}}\nfn f(input:u32)->(u32,u32){let s=S{y:input>>4,x:input&15u32,..base(input)};(s.x,s.y)}\nfn main(){for input in [0,1,15,16,31,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "(0, 0)\n(1, 0)\n(15, 0)\n(0, 1)\n(15, 1)\n(15, 15)\n(15, 4095)\n(15, 268435455)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "(0, 0)\n(1, 0)\n(15, 0)\n(0, 1)\n(15, 1)\n(15, 15)\n(15, 4095)\n(15, 268435455)\n"
      }
    }
  },
  {
    "id": "S07_drop_field_order",
    "family": "fields",
    "a": "struct Cell(u8);\nimpl Drop for Cell{fn drop(&mut self){println!(\"D{}\",self.0);}}\nstruct S{p:Cell,q:Cell}\nfn f(input:u32)->(u8,u8){let p=u8::try_from(input&1u32).expect(\"fits\");let q=u8::try_from((input>>4)&0xFFu32).expect(\"fits\");let s=S{p:Cell(p),q:Cell(q)};(s.p.0,s.q.0)}\nfn main(){for input in [0,1,15,16,31,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "b": "struct Cell(u8);\nimpl Drop for Cell{fn drop(&mut self){println!(\"D{}\",self.0);}}\nstruct S{p:Cell,q:Cell}\nfn f(input:u32)->(u8,u8){let p=u8::try_from(input&1u32).expect(\"fits\");let q=u8::try_from((input>>4)&0xFFu32).expect(\"fits\");let s=S{q:Cell(q),p:Cell(p)};(s.p.0,s.q.0)}\nfn main(){for input in [0,1,15,16,31,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "D0\nD0\n(0, 0)\nD1\nD0\n(1, 0)\nD1\nD0\n(1, 0)\nD0\nD1\n(0, 1)\nD1\nD1\n(1, 1)\nD1\nD15\n(1, 15)\nD1\nD255\n(1, 255)\nD1\nD255\n(1, 255)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "D0\nD0\n(0, 0)\nD1\nD0\n(1, 0)\nD1\nD0\n(1, 0)\nD0\nD1\n(0, 1)\nD1\nD1\n(1, 1)\nD1\nD15\n(1, 15)\nD1\nD255\n(1, 255)\nD1\nD255\n(1, 255)\n"
      }
    }
  },
  {
    "id": "S08_swapped_initializers",
    "family": "fields",
    "a": "struct S{x:u32,y:u32}\nfn f(input:u32)->(u32,u32){let s=S{x:input&15u32,y:input>>4};(s.x,s.y)}\nfn main(){for input in [0,1,15,16,31,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "b": "struct S{x:u32,y:u32}\nfn f(input:u32)->(u32,u32){let s=S{x:input>>4,y:input&15u32};(s.x,s.y)}\nfn main(){for input in [0,1,15,16,31,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "expected": "different",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "(0, 0)\n(1, 0)\n(15, 0)\n(0, 1)\n(15, 1)\n(15, 15)\n(15, 4095)\n(15, 268435455)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "(0, 0)\n(0, 1)\n(0, 15)\n(1, 0)\n(1, 15)\n(15, 15)\n(4095, 15)\n(268435455, 15)\n"
      }
    }
  },
  {
    "id": "S09_tuple_positional",
    "family": "fields",
    "a": "struct S(u32,u32);\nfn f(input:u32)->(u32,u32){let s=S(input&15u32,input>>4);(s.0,s.1)}\nfn main(){for input in [0,1,15,16,31,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "b": "struct S(u32,u32);\nfn f(input:u32)->(u32,u32){let s=S(input>>4,input&15u32);(s.0,s.1)}\nfn main(){for input in [0,1,15,16,31,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "expected": "different",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "(0, 0)\n(1, 0)\n(15, 0)\n(0, 1)\n(15, 1)\n(15, 15)\n(15, 4095)\n(15, 268435455)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "(0, 0)\n(0, 1)\n(0, 15)\n(1, 0)\n(1, 15)\n(15, 15)\n(4095, 15)\n(268435455, 15)\n"
      }
    }
  },
  {
    "id": "S10_alias_shadowed_fields",
    "family": "fields",
    "a": "#[allow(non_camel_case_types)]type u32=Wrap;#[derive(Clone,Copy)]struct Wrap(::core::primitive::u32);impl ::core::ops::BitAnd<::core::primitive::u32> for Wrap{type Output=::core::primitive::u32;fn bitand(self,rhs: ::core::primitive::u32)->Self::Output{println!(\"mask {rhs}\");self.0&rhs}}struct S{x: ::core::primitive::u32,y: ::core::primitive::u32}fn f(input:u32)->(::core::primitive::u32,::core::primitive::u32){let s=S{x:input&15u32,y:input&31u32};(s.x,s.y)}fn main(){for input in [0,1,15,16,31,255,65535,::core::primitive::u32::MAX]{println!(\"{:?}\",f(Wrap(input)));}}",
    "b": "#[allow(non_camel_case_types)]type u32=Wrap;#[derive(Clone,Copy)]struct Wrap(::core::primitive::u32);impl ::core::ops::BitAnd<::core::primitive::u32> for Wrap{type Output=::core::primitive::u32;fn bitand(self,rhs: ::core::primitive::u32)->Self::Output{println!(\"mask {rhs}\");self.0&rhs}}struct S{x: ::core::primitive::u32,y: ::core::primitive::u32}fn f(input:u32)->(::core::primitive::u32,::core::primitive::u32){let s=S{y:input&31u32,x:input&15u32};(s.x,s.y)}fn main(){for input in [0,1,15,16,31,255,65535,::core::primitive::u32::MAX]{println!(\"{:?}\",f(Wrap(input)));}}",
    "expected": "different",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "mask 15\nmask 31\n(0, 0)\nmask 15\nmask 31\n(1, 1)\nmask 15\nmask 31\n(15, 15)\nmask 15\nmask 31\n(0, 16)\nmask 15\nmask 31\n(15, 31)\nmask 15\nmask 31\n(15, 31)\nmask 15\nmask 31\n(15, 31)\nmask 15\nmask 31\n(15, 31)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "mask 31\nmask 15\n(0, 0)\nmask 31\nmask 15\n(1, 1)\nmask 31\nmask 15\n(15, 15)\nmask 31\nmask 15\n(0, 16)\nmask 31\nmask 15\n(15, 31)\nmask 31\nmask 15\n(15, 31)\nmask 31\nmask 15\n(15, 31)\nmask 31\nmask 15\n(15, 31)\n"
      }
    }
  },
  {
    "id": "S11_duplicate_literal",
    "family": "patterns",
    "a": "fn f(input:u32)->bool{match input{1|1|2=>true,_=>false}}\nfn main(){for input in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "b": "fn f(input:u32)->bool{match input{1|2=>true,_=>false}}\nfn main(){for input in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "false\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n"
      },
      "b": {
        "exit": 0,
        "stdout": "false\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n"
      }
    }
  },
  {
    "id": "S12_arm_order",
    "family": "patterns",
    "a": "fn f(input:u32)->u32{match input{2=>10u32,1=>20u32,_=>0u32}}\nfn main(){for input in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "b": "fn f(input:u32)->u32{match input{1=>20u32,2=>10u32,_=>0u32}}\nfn main(){for input in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "0\n20\n10\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n"
      },
      "b": {
        "exit": 0,
        "stdout": "0\n20\n10\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n"
      }
    }
  },
  {
    "id": "S13_guarded_alternatives",
    "family": "patterns",
    "a": "fn f(input:u32)->bool{match input{1|2 if input!=0=>true,_=>false}}\nfn main(){for input in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "b": "fn f(input:u32)->bool{match input{2|1 if input!=0=>true,_=>false}}\nfn main(){for input in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "false\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n"
      },
      "b": {
        "exit": 0,
        "stdout": "false\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n"
      }
    }
  },
  {
    "id": "S14_binding_alternatives",
    "family": "patterns",
    "a": "fn f(input:u32)->u32{match input{n@1|n@2=>n,_=>0u32}}\nfn main(){for input in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "b": "fn f(input:u32)->u32{match input{n@2|n@1=>n,_=>0u32}}\nfn main(){for input in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "0\n1\n2\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n"
      },
      "b": {
        "exit": 0,
        "stdout": "0\n1\n2\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n"
      }
    }
  },
  {
    "id": "S15_range_alternative",
    "family": "patterns",
    "a": "fn f(input:u32)->bool{match input{1|2..=2=>true,_=>false}}\nfn main(){for input in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "b": "fn f(input:u32)->bool{match input{2..=2|1=>true,_=>false}}\nfn main(){for input in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "false\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n"
      },
      "b": {
        "exit": 0,
        "stdout": "false\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n"
      }
    }
  },
  {
    "id": "S16_macro_alternative",
    "family": "patterns",
    "a": "macro_rules!two{()=>{2u32}}\nfn f(input:u32)->bool{match input{two!()|1=>true,_=>false}}\nfn main(){for input in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "b": "macro_rules!two{()=>{2u32}}\nfn f(input:u32)->bool{match input{1|two!()=>true,_=>false}}\nfn main(){for input in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "false\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n"
      },
      "b": {
        "exit": 0,
        "stdout": "false\ntrue\ntrue\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\nfalse\n"
      }
    }
  },
  {
    "id": "S17_total_helper_field",
    "family": "fields",
    "a": "fn note(input:u32)->u32{input}\nstruct S{x:u32,y:u32}\nfn f(input:u32)->(u32,u32){let s=S{x:input&15u32,y:note(input>>4)};(s.x,s.y)}\nfn main(){for input in [0,1,15,16,31,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "b": "fn note(input:u32)->u32{input}\nstruct S{x:u32,y:u32}\nfn f(input:u32)->(u32,u32){let s=S{y:note(input>>4),x:input&15u32};(s.x,s.y)}\nfn main(){for input in [0,1,15,16,31,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "(0, 0)\n(1, 0)\n(15, 0)\n(0, 1)\n(15, 1)\n(15, 15)\n(15, 4095)\n(15, 268435455)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "(0, 0)\n(1, 0)\n(15, 0)\n(0, 1)\n(15, 1)\n(15, 15)\n(15, 4095)\n(15, 268435455)\n"
      }
    }
  },
  {
    "id": "S18_non_total_helper_field",
    "family": "fields",
    "a": "fn fail(input:u32)->u32{if input>10u32{panic!(\"no\")}input}\nstruct S{x:u32,y:u32}\nfn f(input:u32)->(u32,u32){let s=S{x:input&15u32,y:fail(input>>4)};(s.x,s.y)}\nfn main(){println!(\"{:?}\",f(1u32));}",
    "b": "fn fail(input:u32)->u32{if input>10u32{panic!(\"no\")}input}\nstruct S{x:u32,y:u32}\nfn f(input:u32)->(u32,u32){let s=S{y:fail(input>>4),x:input&15u32};(s.x,s.y)}\nfn main(){println!(\"{:?}\",f(1u32));}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "(1, 0)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "(1, 0)\n"
      }
    }
  },
  {
    "id": "S19_effectful_update_base",
    "family": "fields",
    "a": "struct S{x:u32,y:u32}\nfn base(input:u32)->S{println!(\"base\");S{x:input,y:input}}\nfn f(input:u32)->(u32,u32){let s=S{x:input&15u32,y:input>>4,..base(input)};(s.x,s.y)}\nfn main(){for input in [0,1,15,16,31,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "b": "struct S{x:u32,y:u32}\nfn base(input:u32)->S{println!(\"base\");S{x:input,y:input}}\nfn f(input:u32)->(u32,u32){let s=S{y:input>>4,x:input&15u32,..base(input)};(s.x,s.y)}\nfn main(){for input in [0,1,15,16,31,255,65535,u32::MAX]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "base\n(0, 0)\nbase\n(1, 0)\nbase\n(15, 0)\nbase\n(0, 1)\nbase\n(15, 1)\nbase\n(15, 15)\nbase\n(15, 4095)\nbase\n(15, 268435455)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "base\n(0, 0)\nbase\n(1, 0)\nbase\n(15, 0)\nbase\n(0, 1)\nbase\n(15, 1)\nbase\n(15, 15)\nbase\n(15, 4095)\nbase\n(15, 268435455)\n"
      }
    }
  },
  {
    "id": "S20_panic_update_base",
    "family": "fields",
    "a": "struct S{x:u32,y:u32}fn base(input:u32)->S{println!(\"base {input}\");panic!(\"base-failure\")}fn f(input:u32)->u32{let s=S{x:input&15u32,y:input>>4,..base(input)};s.x}fn main(){f(17u32);}",
    "b": "struct S{x:u32,y:u32}fn base(input:u32)->S{println!(\"base {input}\");panic!(\"base-failure\")}fn f(input:u32)->u32{let s=S{y:input>>4,x:input&15u32,..base(input)};s.x}fn main(){f(17u32);}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 101,
        "stdout": "base 17\n",
        "stderr": "base-failure"
      },
      "b": {
        "exit": 101,
        "stdout": "base 17\n",
        "stderr": "base-failure"
      }
    }
  },
  {
    "id": "S21_bool_alternatives",
    "family": "patterns",
    "a": "fn f(input:bool)->u32{match input{true|false=>1u32}}\nfn main(){for input in [false,true]{println!(\"{:?}\",f(input));}}",
    "b": "fn f(input:bool)->u32{match input{false|true=>1u32}}\nfn main(){for input in [false,true]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "1\n1\n"
      },
      "b": {
        "exit": 0,
        "stdout": "1\n1\n"
      }
    }
  },
  {
    "id": "S22_char_alternatives",
    "family": "patterns",
    "a": "fn f(input:char)->u32{match input{'b'|'a'=>1u32,'z'=>2u32,_=>0u32}}\nfn main(){for input in ['a','b','z','x']{println!(\"{:?}\",f(input));}}",
    "b": "fn f(input:char)->u32{match input{'a'|'b'=>1u32,'z'=>2u32,_=>0u32}}\nfn main(){for input in ['a','b','z','x']{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "1\n1\n2\n0\n"
      },
      "b": {
        "exit": 0,
        "stdout": "1\n1\n2\n0\n"
      }
    }
  },
  {
    "id": "S23_byte_alternatives",
    "family": "patterns",
    "a": "fn f(input:u8)->u32{match input{13u8|10u8=>1u32,_=>0u32}}\nfn main(){for input in [10u8,13u8,9u8,255u8]{println!(\"{:?}\",f(input));}}",
    "b": "fn f(input:u8)->u32{match input{10u8|13u8=>1u32,_=>0u32}}\nfn main(){for input in [10u8,13u8,9u8,255u8]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "1\n1\n0\n0\n"
      },
      "b": {
        "exit": 0,
        "stdout": "1\n1\n0\n0\n"
      }
    }
  },
  {
    "id": "S24_string_alternatives",
    "family": "patterns",
    "a": "fn f(input:&str)->u32{match input{\"one\"|\"two\"=>1u32,\"three\"=>2u32,_=>0u32}}\nfn main(){for input in [\"one\",\"two\",\"three\",\"four\"]{println!(\"{:?}\",f(input));}}",
    "b": "fn f(input:&str)->u32{match input{\"two\"|\"one\"=>1u32,\"three\"=>2u32,_=>0u32}}\nfn main(){for input in [\"one\",\"two\",\"three\",\"four\"]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "1\n1\n2\n0\n"
      },
      "b": {
        "exit": 0,
        "stdout": "1\n1\n2\n0\n"
      }
    }
  },
  {
    "id": "S25_u8_fields",
    "family": "fields",
    "a": "struct S{x:u8,y:u8}fn f(input:u8)->(u8,u8){let s=S{x:input&15u8,y:input>>4};(s.x,s.y)}fn main(){for input in [0u8,1u8,2u8,3u8,4u8,5u8,6u8,7u8,8u8,9u8,10u8,11u8,12u8,13u8,14u8,15u8,16u8,255u8]{println!(\"{:?}\",f(input));}}",
    "b": "struct S{x:u8,y:u8}fn f(input:u8)->(u8,u8){let s=S{y:input>>4,x:input&15u8};(s.x,s.y)}fn main(){for input in [0u8,1u8,2u8,3u8,4u8,5u8,6u8,7u8,8u8,9u8,10u8,11u8,12u8,13u8,14u8,15u8,16u8,255u8]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(8, 0)\n(9, 0)\n(10, 0)\n(11, 0)\n(12, 0)\n(13, 0)\n(14, 0)\n(15, 0)\n(0, 1)\n(15, 15)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(8, 0)\n(9, 0)\n(10, 0)\n(11, 0)\n(12, 0)\n(13, 0)\n(14, 0)\n(15, 0)\n(0, 1)\n(15, 15)\n"
      }
    }
  },
  {
    "id": "S26_u16_fields",
    "family": "fields",
    "a": "struct S{x:u16,y:u16}fn f(input:u16)->(u16,u16){let s=S{x:input&15u16,y:input>>4};(s.x,s.y)}fn main(){for input in [0u16,1u16,2u16,3u16,4u16,5u16,6u16,7u16,8u16,9u16,10u16,11u16,12u16,13u16,14u16,15u16,16u16,65535u16]{println!(\"{:?}\",f(input));}}",
    "b": "struct S{x:u16,y:u16}fn f(input:u16)->(u16,u16){let s=S{y:input>>4,x:input&15u16};(s.x,s.y)}fn main(){for input in [0u16,1u16,2u16,3u16,4u16,5u16,6u16,7u16,8u16,9u16,10u16,11u16,12u16,13u16,14u16,15u16,16u16,65535u16]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(8, 0)\n(9, 0)\n(10, 0)\n(11, 0)\n(12, 0)\n(13, 0)\n(14, 0)\n(15, 0)\n(0, 1)\n(15, 4095)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(8, 0)\n(9, 0)\n(10, 0)\n(11, 0)\n(12, 0)\n(13, 0)\n(14, 0)\n(15, 0)\n(0, 1)\n(15, 4095)\n"
      }
    }
  },
  {
    "id": "S27_u32_fields",
    "family": "fields",
    "a": "struct S{x:u32,y:u32}fn f(input:u32)->(u32,u32){let s=S{x:input&15u32,y:input>>4};(s.x,s.y)}fn main(){for input in [0u32,1u32,2u32,3u32,4u32,5u32,6u32,7u32,8u32,9u32,10u32,11u32,12u32,13u32,14u32,15u32,16u32,4294967295u32]{println!(\"{:?}\",f(input));}}",
    "b": "struct S{x:u32,y:u32}fn f(input:u32)->(u32,u32){let s=S{y:input>>4,x:input&15u32};(s.x,s.y)}fn main(){for input in [0u32,1u32,2u32,3u32,4u32,5u32,6u32,7u32,8u32,9u32,10u32,11u32,12u32,13u32,14u32,15u32,16u32,4294967295u32]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(8, 0)\n(9, 0)\n(10, 0)\n(11, 0)\n(12, 0)\n(13, 0)\n(14, 0)\n(15, 0)\n(0, 1)\n(15, 268435455)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(8, 0)\n(9, 0)\n(10, 0)\n(11, 0)\n(12, 0)\n(13, 0)\n(14, 0)\n(15, 0)\n(0, 1)\n(15, 268435455)\n"
      }
    }
  },
  {
    "id": "S28_u64_fields",
    "family": "fields",
    "a": "struct S{x:u64,y:u64}fn f(input:u64)->(u64,u64){let s=S{x:input&15u64,y:input>>4};(s.x,s.y)}fn main(){for input in [0u64,1u64,2u64,3u64,4u64,5u64,6u64,7u64,8u64,9u64,10u64,11u64,12u64,13u64,14u64,15u64,16u64,18446744073709551615u64]{println!(\"{:?}\",f(input));}}",
    "b": "struct S{x:u64,y:u64}fn f(input:u64)->(u64,u64){let s=S{y:input>>4,x:input&15u64};(s.x,s.y)}fn main(){for input in [0u64,1u64,2u64,3u64,4u64,5u64,6u64,7u64,8u64,9u64,10u64,11u64,12u64,13u64,14u64,15u64,16u64,18446744073709551615u64]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(8, 0)\n(9, 0)\n(10, 0)\n(11, 0)\n(12, 0)\n(13, 0)\n(14, 0)\n(15, 0)\n(0, 1)\n(15, 1152921504606846975)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(8, 0)\n(9, 0)\n(10, 0)\n(11, 0)\n(12, 0)\n(13, 0)\n(14, 0)\n(15, 0)\n(0, 1)\n(15, 1152921504606846975)\n"
      }
    }
  },
  {
    "id": "S29_u128_fields",
    "family": "fields",
    "a": "struct S{x:u128,y:u128}fn f(input:u128)->(u128,u128){let s=S{x:input&15u128,y:input>>4};(s.x,s.y)}fn main(){for input in [0u128,1u128,2u128,3u128,4u128,5u128,6u128,7u128,8u128,9u128,10u128,11u128,12u128,13u128,14u128,15u128,16u128,340282366920938463463374607431768211455u128]{println!(\"{:?}\",f(input));}}",
    "b": "struct S{x:u128,y:u128}fn f(input:u128)->(u128,u128){let s=S{y:input>>4,x:input&15u128};(s.x,s.y)}fn main(){for input in [0u128,1u128,2u128,3u128,4u128,5u128,6u128,7u128,8u128,9u128,10u128,11u128,12u128,13u128,14u128,15u128,16u128,340282366920938463463374607431768211455u128]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(8, 0)\n(9, 0)\n(10, 0)\n(11, 0)\n(12, 0)\n(13, 0)\n(14, 0)\n(15, 0)\n(0, 1)\n(15, 21267647932558653966460912964485513215)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(8, 0)\n(9, 0)\n(10, 0)\n(11, 0)\n(12, 0)\n(13, 0)\n(14, 0)\n(15, 0)\n(0, 1)\n(15, 21267647932558653966460912964485513215)\n"
      }
    }
  },
  {
    "id": "S30_i8_fields",
    "family": "fields",
    "a": "struct S{x:i8,y:i8}fn f(input:i8)->(i8,i8){let s=S{x:input&15i8,y:input>>4};(s.x,s.y)}fn main(){for input in [-8i8,-7i8,-6i8,-5i8,-4i8,-3i8,-2i8,-1i8,0i8,1i8,2i8,3i8,4i8,5i8,6i8,7i8,15i8,16i8,-128i8,127i8]{println!(\"{:?}\",f(input));}}",
    "b": "struct S{x:i8,y:i8}fn f(input:i8)->(i8,i8){let s=S{y:input>>4,x:input&15i8};(s.x,s.y)}fn main(){for input in [-8i8,-7i8,-6i8,-5i8,-4i8,-3i8,-2i8,-1i8,0i8,1i8,2i8,3i8,4i8,5i8,6i8,7i8,15i8,16i8,-128i8,127i8]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "(8, -1)\n(9, -1)\n(10, -1)\n(11, -1)\n(12, -1)\n(13, -1)\n(14, -1)\n(15, -1)\n(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(15, 0)\n(0, 1)\n(0, -8)\n(15, 7)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "(8, -1)\n(9, -1)\n(10, -1)\n(11, -1)\n(12, -1)\n(13, -1)\n(14, -1)\n(15, -1)\n(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(15, 0)\n(0, 1)\n(0, -8)\n(15, 7)\n"
      }
    }
  },
  {
    "id": "S31_i16_fields",
    "family": "fields",
    "a": "struct S{x:i16,y:i16}fn f(input:i16)->(i16,i16){let s=S{x:input&15i16,y:input>>4};(s.x,s.y)}fn main(){for input in [-8i16,-7i16,-6i16,-5i16,-4i16,-3i16,-2i16,-1i16,0i16,1i16,2i16,3i16,4i16,5i16,6i16,7i16,15i16,16i16,-32768i16,32767i16]{println!(\"{:?}\",f(input));}}",
    "b": "struct S{x:i16,y:i16}fn f(input:i16)->(i16,i16){let s=S{y:input>>4,x:input&15i16};(s.x,s.y)}fn main(){for input in [-8i16,-7i16,-6i16,-5i16,-4i16,-3i16,-2i16,-1i16,0i16,1i16,2i16,3i16,4i16,5i16,6i16,7i16,15i16,16i16,-32768i16,32767i16]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "(8, -1)\n(9, -1)\n(10, -1)\n(11, -1)\n(12, -1)\n(13, -1)\n(14, -1)\n(15, -1)\n(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(15, 0)\n(0, 1)\n(0, -2048)\n(15, 2047)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "(8, -1)\n(9, -1)\n(10, -1)\n(11, -1)\n(12, -1)\n(13, -1)\n(14, -1)\n(15, -1)\n(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(15, 0)\n(0, 1)\n(0, -2048)\n(15, 2047)\n"
      }
    }
  },
  {
    "id": "S32_i32_fields",
    "family": "fields",
    "a": "struct S{x:i32,y:i32}fn f(input:i32)->(i32,i32){let s=S{x:input&15i32,y:input>>4};(s.x,s.y)}fn main(){for input in [-8i32,-7i32,-6i32,-5i32,-4i32,-3i32,-2i32,-1i32,0i32,1i32,2i32,3i32,4i32,5i32,6i32,7i32,15i32,16i32,-2147483648i32,2147483647i32]{println!(\"{:?}\",f(input));}}",
    "b": "struct S{x:i32,y:i32}fn f(input:i32)->(i32,i32){let s=S{y:input>>4,x:input&15i32};(s.x,s.y)}fn main(){for input in [-8i32,-7i32,-6i32,-5i32,-4i32,-3i32,-2i32,-1i32,0i32,1i32,2i32,3i32,4i32,5i32,6i32,7i32,15i32,16i32,-2147483648i32,2147483647i32]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "(8, -1)\n(9, -1)\n(10, -1)\n(11, -1)\n(12, -1)\n(13, -1)\n(14, -1)\n(15, -1)\n(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(15, 0)\n(0, 1)\n(0, -134217728)\n(15, 134217727)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "(8, -1)\n(9, -1)\n(10, -1)\n(11, -1)\n(12, -1)\n(13, -1)\n(14, -1)\n(15, -1)\n(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(15, 0)\n(0, 1)\n(0, -134217728)\n(15, 134217727)\n"
      }
    }
  },
  {
    "id": "S33_i64_fields",
    "family": "fields",
    "a": "struct S{x:i64,y:i64}fn f(input:i64)->(i64,i64){let s=S{x:input&15i64,y:input>>4};(s.x,s.y)}fn main(){for input in [-8i64,-7i64,-6i64,-5i64,-4i64,-3i64,-2i64,-1i64,0i64,1i64,2i64,3i64,4i64,5i64,6i64,7i64,15i64,16i64,-9223372036854775808i64,9223372036854775807i64]{println!(\"{:?}\",f(input));}}",
    "b": "struct S{x:i64,y:i64}fn f(input:i64)->(i64,i64){let s=S{y:input>>4,x:input&15i64};(s.x,s.y)}fn main(){for input in [-8i64,-7i64,-6i64,-5i64,-4i64,-3i64,-2i64,-1i64,0i64,1i64,2i64,3i64,4i64,5i64,6i64,7i64,15i64,16i64,-9223372036854775808i64,9223372036854775807i64]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "(8, -1)\n(9, -1)\n(10, -1)\n(11, -1)\n(12, -1)\n(13, -1)\n(14, -1)\n(15, -1)\n(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(15, 0)\n(0, 1)\n(0, -576460752303423488)\n(15, 576460752303423487)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "(8, -1)\n(9, -1)\n(10, -1)\n(11, -1)\n(12, -1)\n(13, -1)\n(14, -1)\n(15, -1)\n(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(15, 0)\n(0, 1)\n(0, -576460752303423488)\n(15, 576460752303423487)\n"
      }
    }
  },
  {
    "id": "S34_i128_fields",
    "family": "fields",
    "a": "struct S{x:i128,y:i128}fn f(input:i128)->(i128,i128){let s=S{x:input&15i128,y:input>>4};(s.x,s.y)}fn main(){for input in [-8i128,-7i128,-6i128,-5i128,-4i128,-3i128,-2i128,-1i128,0i128,1i128,2i128,3i128,4i128,5i128,6i128,7i128,15i128,16i128,-170141183460469231731687303715884105728i128,170141183460469231731687303715884105727i128]{println!(\"{:?}\",f(input));}}",
    "b": "struct S{x:i128,y:i128}fn f(input:i128)->(i128,i128){let s=S{y:input>>4,x:input&15i128};(s.x,s.y)}fn main(){for input in [-8i128,-7i128,-6i128,-5i128,-4i128,-3i128,-2i128,-1i128,0i128,1i128,2i128,3i128,4i128,5i128,6i128,7i128,15i128,16i128,-170141183460469231731687303715884105728i128,170141183460469231731687303715884105727i128]{println!(\"{:?}\",f(input));}}",
    "expected": "same",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "(8, -1)\n(9, -1)\n(10, -1)\n(11, -1)\n(12, -1)\n(13, -1)\n(14, -1)\n(15, -1)\n(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(15, 0)\n(0, 1)\n(0, -10633823966279326983230456482242756608)\n(15, 10633823966279326983230456482242756607)\n"
      },
      "b": {
        "exit": 0,
        "stdout": "(8, -1)\n(9, -1)\n(10, -1)\n(11, -1)\n(12, -1)\n(13, -1)\n(14, -1)\n(15, -1)\n(0, 0)\n(1, 0)\n(2, 0)\n(3, 0)\n(4, 0)\n(5, 0)\n(6, 0)\n(7, 0)\n(15, 0)\n(0, 1)\n(0, -10633823966279326983230456482242756608)\n(15, 10633823966279326983230456482242756607)\n"
      }
    }
  },
  {
    "id": "C01_duplicate_labels",
    "family": "fields",
    "a": "struct S{x:u32,y:u32}\nfn main(){let _=S{x:1u32,x:2u32};}",
    "b": "struct S{x:u32,y:u32}\nfn main(){let _=S{y:1u32,y:2u32};}",
    "expected": "different",
    "expect": {
      "a": {
        "compile": [
          "error[E0062]"
        ],
        "run": "absent"
      },
      "b": {
        "compile": [
          "error[E0062]"
        ],
        "run": "absent"
      }
    }
  },
  {
    "id": "C02_unknown_field",
    "family": "fields",
    "a": "struct S{x:u32,y:u32}\nfn main(){let _=S{x:1u32,z:2u32};}",
    "b": "struct S{x:u32,y:u32}\nfn main(){let _=S{z:1u32,y:2u32};}",
    "expected": "different",
    "expect": {
      "a": {
        "compile": [
          "error[E0560]"
        ],
        "run": "absent"
      },
      "b": {
        "compile": [
          "error[E0560]"
        ],
        "run": "absent"
      }
    }
  },
  {
    "id": "C03_positional_arity",
    "family": "fields",
    "a": "struct S(u32,u32);\nfn main(){let _=S(1u32);}",
    "b": "struct S(u32,u32);\nfn main(){let _=S(1u32,2u32,3u32);}",
    "expected": "different",
    "expect": {
      "a": {
        "compile": [
          "error[E0061]"
        ],
        "run": "absent"
      },
      "b": {
        "compile": [
          "error[E0061]"
        ],
        "run": "absent"
      }
    }
  },
  {
    "id": "C04_partial_binding",
    "family": "patterns",
    "a": "fn main(){let x:u32=1;let _=match x{n@1|2=>n,_=>0u32};}",
    "b": "fn main(){let x:u32=1;let _=match x{2|n@1=>n,_=>0u32};}",
    "expected": "different",
    "expect": {
      "a": {
        "compile": [
          "error[E0408]"
        ],
        "run": "absent"
      },
      "b": {
        "compile": [
          "error[E0408]"
        ],
        "run": "absent"
      }
    }
  },
  {
    "id": "C05_unsigned_negative",
    "family": "patterns",
    "a": "fn main(){let x:u32=1;let _=match x{1|-1=>true,_=>false};}",
    "b": "fn main(){let x:u32=1;let _=match x{-1|1=>true,_=>false};}",
    "expected": "different",
    "expect": {
      "a": {
        "compile": [
          "error[E0277]"
        ],
        "run": "absent"
      },
      "b": {
        "compile": [
          "error[E0277]"
        ],
        "run": "absent"
      }
    }
  },
  {
    "id": "S35_literal_payload_observer",
    "family": "patterns",
    "expected": "different",
    "a": "macro_rules! observe{($value:expr;$left:literal|$right:literal)=>{{println!(\"{} {}\",stringify!($left),stringify!($right));match $value{$left|$right=>true,_=>false}}}}fn main(){println!(\"{}\",observe!(2u32;1|2));}",
    "b": "macro_rules! observe{($value:expr;$left:literal|$right:literal)=>{{println!(\"{} {}\",stringify!($left),stringify!($right));match $value{$left|$right=>true,_=>false}}}}fn main(){println!(\"{}\",observe!(2u32;2|1));}",
    "expect": {
      "a": {
        "exit": 0,
        "stdout": "1 2\ntrue\n"
      },
      "b": {
        "exit": 0,
        "stdout": "2 1\ntrue\n"
      }
    }
  }
]