master
1const expect = @import("std").testing.expect;
2const builtin = @import("builtin");
3
4test "@hasField" {
5 const struc = struct {
6 a: i32,
7 b: []u8,
8
9 pub const nope = 1;
10 };
11 try expect(@hasField(struc, "a") == true);
12 try expect(@hasField(struc, "b") == true);
13 try expect(@hasField(struc, "non-existant") == false);
14 try expect(@hasField(struc, "nope") == false);
15
16 const unin = union {
17 a: u64,
18 b: []u16,
19
20 pub const nope = 1;
21 };
22 try expect(@hasField(unin, "a") == true);
23 try expect(@hasField(unin, "b") == true);
24 try expect(@hasField(unin, "non-existant") == false);
25 try expect(@hasField(unin, "nope") == false);
26
27 const enm = enum {
28 a,
29 b,
30
31 pub const nope = 1;
32 };
33 try expect(@hasField(enm, "a") == true);
34 try expect(@hasField(enm, "b") == true);
35 try expect(@hasField(enm, "non-existant") == false);
36 try expect(@hasField(enm, "nope") == false);
37
38 const anon = @TypeOf(.{ .a = 1 });
39 try expect(@hasField(anon, "a") == true);
40 try expect(@hasField(anon, "b") == false);
41
42 const tuple = @TypeOf(.{ 1, 2 });
43 try expect(@hasField(tuple, "a") == false);
44 try expect(@hasField(tuple, "b") == false);
45 try expect(@hasField(tuple, "0") == true);
46 try expect(@hasField(tuple, "1") == true);
47 try expect(@hasField(tuple, "2") == false);
48 try expect(@hasField(tuple, "9999999999999999999999999") == false);
49}