aboutsummaryrefslogtreecommitdiff
path: root/test/behavior
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2023-01-18 12:56:48 +0200
committerVeikka Tuominen <git@vexu.eu>2023-01-22 00:12:36 +0200
commitd284c00fda45b943f4ed5244ae1cb9e7f90f481f (patch)
treebfec199eade94e25e173b0150b565bd1123f7764 /test/behavior
parent7f635ae7bdf63da19d09763c7fdbdc61fa035282 (diff)
downloadzig-d284c00fda45b943f4ed5244ae1cb9e7f90f481f.tar.gz
zig-d284c00fda45b943f4ed5244ae1cb9e7f90f481f.zip
Sema: handle lazy values in more places
* resolve lazy values in anon structs being passed to anytype params * use `resolveMaybeUndefValIntable` where appropriate Closes #14356
Diffstat (limited to 'test/behavior')
-rw-r--r--test/behavior/bugs/12488.zig13
-rw-r--r--test/behavior/fn.zig23
2 files changed, 23 insertions, 13 deletions
diff --git a/test/behavior/bugs/12488.zig b/test/behavior/bugs/12488.zig
deleted file mode 100644
index b05197b24f..0000000000
--- a/test/behavior/bugs/12488.zig
+++ /dev/null
@@ -1,13 +0,0 @@
-const expect = @import("std").testing.expect;
-
-const A = struct {
- a: u32,
-};
-
-fn foo(comptime a: anytype) !void {
- try expect(a[0][0] == @sizeOf(A));
-}
-
-test {
- try foo(.{[_]usize{@sizeOf(A)}});
-}
diff --git a/test/behavior/fn.zig b/test/behavior/fn.zig
index 8dca94a656..d5f959e507 100644
--- a/test/behavior/fn.zig
+++ b/test/behavior/fn.zig
@@ -517,3 +517,26 @@ test "peer type resolution of inferred error set with non-void payload" {
};
try expect(try S.openDataFile(.read) == 1);
}
+
+test "lazy values passed to anytype parameter" {
+ const A = struct {
+ a: u32,
+ fn foo(comptime a: anytype) !void {
+ try expect(a[0][0] == @sizeOf(@This()));
+ }
+ };
+ try A.foo(.{[_]usize{@sizeOf(A)}});
+
+ const B = struct {
+ fn foo(comptime a: anytype) !void {
+ try expect(a.x == 0);
+ }
+ };
+ try B.foo(.{ .x = @sizeOf(B) });
+
+ const C = struct {};
+ try expect(@truncate(u32, @sizeOf(C)) == 0);
+
+ const D = struct {};
+ try expect(@sizeOf(D) << 1 == 0);
+}