| ... | ... | @@ -644,4 +644,58 @@ pub fn addCases(ctx: *TestContext) !void { |
| 644 | 644 | \\} |
| 645 | 645 | , "5\n"); |
| 646 | 646 | } |
| 647 | |
| 648 | { |
| 649 | var case = ctx.exe("wasm optionals", wasi); |
| 650 | |
| 651 | case.addCompareOutput( |
| 652 | \\pub export fn _start() u32 { |
| 653 | \\ var x: ?u32 = 5; |
| 654 | \\ var y: u32 = 0; |
| 655 | \\ if (x) |val| { |
| 656 | \\ y = val; |
| 657 | \\ } |
| 658 | \\ return y; |
| 659 | \\} |
| 660 | , "5\n"); |
| 661 | |
| 662 | case.addCompareOutput( |
| 663 | \\pub export fn _start() u32 { |
| 664 | \\ var x: ?u32 = null; |
| 665 | \\ var y: u32 = 0; |
| 666 | \\ if (x) |val| { |
| 667 | \\ y = val; |
| 668 | \\ } |
| 669 | \\ return y; |
| 670 | \\} |
| 671 | , "0\n"); |
| 672 | |
| 673 | case.addCompareOutput( |
| 674 | \\pub export fn _start() u32 { |
| 675 | \\ var x: ?u32 = 5; |
| 676 | \\ return x.?; |
| 677 | \\} |
| 678 | , "5\n"); |
| 679 | |
| 680 | case.addCompareOutput( |
| 681 | \\pub export fn _start() u32 { |
| 682 | \\ var x: u32 = 5; |
| 683 | \\ var y: ?u32 = x; |
| 684 | \\ return y.?; |
| 685 | \\} |
| 686 | , "5\n"); |
| 687 | |
| 688 | case.addCompareOutput( |
| 689 | \\pub export fn _start() u32 { |
| 690 | \\ var val: ?u32 = 5; |
| 691 | \\ while (val) |*v| { |
| 692 | \\ v.* -= 1; |
| 693 | \\ if (v.* == 2) { |
| 694 | \\ val = null; |
| 695 | \\ } |
| 696 | \\ } |
| 697 | \\ return 0; |
| 698 | \\} |
| 699 | , "0\n"); |
| 700 | } |
| 647 | 701 | } |