| ... | ... | @@ -1462,4 +1462,51 @@ pub fn addCases(ctx: *TestContext) !void { |
| 1462 | 1462 | "", |
| 1463 | 1463 | ); |
| 1464 | 1464 | } |
| 1465 | { |
| 1466 | var case = ctx.exe("orelse at comptime", linux_x64); |
| 1467 | case.addCompareOutput( |
| 1468 | \\export fn _start() noreturn { |
| 1469 | \\ const i: ?u64 = 0; |
| 1470 | \\ const orelsed = i orelse 5; |
| 1471 | \\ assert(orelsed == 0); |
| 1472 | \\ exit(); |
| 1473 | \\} |
| 1474 | \\fn assert(b: bool) void { |
| 1475 | \\ if (!b) unreachable; |
| 1476 | \\} |
| 1477 | \\fn exit() noreturn { |
| 1478 | \\ asm volatile ("syscall" |
| 1479 | \\ : |
| 1480 | \\ : [number] "{rax}" (231), |
| 1481 | \\ [arg1] "{rdi}" (0) |
| 1482 | \\ : "rcx", "r11", "memory" |
| 1483 | \\ ); |
| 1484 | \\ unreachable; |
| 1485 | \\} |
| 1486 | , |
| 1487 | "", |
| 1488 | ); |
| 1489 | case.addCompareOutput( |
| 1490 | \\export fn _start() noreturn { |
| 1491 | \\ const i: ?u64 = null; |
| 1492 | \\ const orelsed = i orelse 5; |
| 1493 | \\ assert(orelsed == 5); |
| 1494 | \\ exit(); |
| 1495 | \\} |
| 1496 | \\fn assert(b: bool) void { |
| 1497 | \\ if (!b) unreachable; |
| 1498 | \\} |
| 1499 | \\fn exit() noreturn { |
| 1500 | \\ asm volatile ("syscall" |
| 1501 | \\ : |
| 1502 | \\ : [number] "{rax}" (231), |
| 1503 | \\ [arg1] "{rdi}" (0) |
| 1504 | \\ : "rcx", "r11", "memory" |
| 1505 | \\ ); |
| 1506 | \\ unreachable; |
| 1507 | \\} |
| 1508 | , |
| 1509 | "", |
| 1510 | ); |
| 1511 | } |
| 1465 | 1512 | } |