| ... | ... | @@ -448,6 +448,23 @@ test "Optional slice size is optimized" { |
| 448 | 448 | try expectEqualStrings(a.?, "hello"); |
| 449 | 449 | } |
| 450 | 450 | |
| 451 | test "Optional slice passed to function" { |
| 452 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 453 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 454 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 455 | |
| 456 | const S = struct { |
| 457 | fn foo(a: ?[]const u8) !void { |
| 458 | try std.testing.expectEqualStrings(a.?, "foo"); |
| 459 | } |
| 460 | fn bar(a: ?[]allowzero const u8) !void { |
| 461 | try std.testing.expectEqualStrings(@ptrCast(a.?), "bar"); |
| 462 | } |
| 463 | }; |
| 464 | try S.foo("foo"); |
| 465 | try S.bar("bar"); |
| 466 | } |
| 467 | |
| 451 | 468 | test "peer type resolution in nested if expressions" { |
| 452 | 469 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 453 | 470 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |