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}