diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-09-10 00:53:26 +0300 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-09-15 00:50:18 +0300 |
| commit | 5e4483fff8077ec8d87ba9125f946955a34b6fc0 (patch) | |
| tree | d3c03ca0b8197aaf3f9163deb5ac13910bff19b5 /test | |
| parent | 5e37da6ade7eb307d51c21a2dfcdbef23e9cbf08 (diff) | |
| download | zig-5e4483fff8077ec8d87ba9125f946955a34b6fc0.tar.gz zig-5e4483fff8077ec8d87ba9125f946955a34b6fc0.zip | |
Sema: handle comptime fields in field call bind
Closes #12801
Diffstat (limited to 'test')
| -rw-r--r-- | test/behavior.zig | 2 | ||||
| -rw-r--r-- | test/behavior/bugs/12801-1.zig | 13 | ||||
| -rw-r--r-- | test/behavior/bugs/12801-2.zig | 24 |
3 files changed, 39 insertions, 0 deletions
diff --git a/test/behavior.zig b/test/behavior.zig index e8a13d7034..dd7c843099 100644 --- a/test/behavior.zig +++ b/test/behavior.zig @@ -89,6 +89,8 @@ test { _ = @import("behavior/bugs/12776.zig"); _ = @import("behavior/bugs/12786.zig"); _ = @import("behavior/bugs/12794.zig"); + _ = @import("behavior/bugs/12801-1.zig"); + _ = @import("behavior/bugs/12801-2.zig"); _ = @import("behavior/byteswap.zig"); _ = @import("behavior/byval_arg_var.zig"); _ = @import("behavior/call.zig"); diff --git a/test/behavior/bugs/12801-1.zig b/test/behavior/bugs/12801-1.zig new file mode 100644 index 0000000000..ff94382d1f --- /dev/null +++ b/test/behavior/bugs/12801-1.zig @@ -0,0 +1,13 @@ +const std = @import("std"); +const builtin = @import("builtin"); + +comptime capacity: fn () u64 = capacity_, +fn capacity_() u64 { + return 64; +} + +test { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + + try std.testing.expect((@This(){}).capacity() == 64); +} diff --git a/test/behavior/bugs/12801-2.zig b/test/behavior/bugs/12801-2.zig new file mode 100644 index 0000000000..f98fcfbcff --- /dev/null +++ b/test/behavior/bugs/12801-2.zig @@ -0,0 +1,24 @@ +const std = @import("std"); +const builtin = @import("builtin"); + +const Auto = struct { + auto: [max_len]u8 = undefined, + offset: u64 = 0, + + comptime capacity: *const fn () u64 = capacity, + + const max_len: u64 = 32; + + fn capacity() u64 { + return max_len; + } +}; +test { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + + const a: Auto = .{ .offset = 16, .capacity = Auto.capacity }; + try std.testing.expect(a.capacity() == 32); + try std.testing.expect((a.capacity)() == 32); +} |
