mirror of
https://github.com/ziglang/zig.git
synced 2026-02-15 13:58:27 +00:00
allow const to be passed to @hasField()
Actually include the tests I wrote
This commit is contained in:
parent
d1f9b8184d
commit
5a91dbc16c
@ -6868,7 +6868,7 @@ fn add(a: i32, b: i32) i32 { return a + b; }
|
||||
</p>
|
||||
{#header_close#}
|
||||
{#header_open|@hasField#}
|
||||
<pre>{#syntax#}@hasField(comptime T: type, comptime name: []u8) bool{#endsyntax#}</pre>
|
||||
<pre>{#syntax#}@hasField(comptime T: type, comptime name: []const u8) bool{#endsyntax#}</pre>
|
||||
<p>Returns if the field name of a struct, union, or enum exists.</p>
|
||||
<p>
|
||||
The result is a compile time constant.
|
||||
|
||||
30
test/stage1/behavior/hasfield.zig
Normal file
30
test/stage1/behavior/hasfield.zig
Normal file
@ -0,0 +1,30 @@
|
||||
const expect = @import("std").testing.expect;
|
||||
const builtin = @import("builtin");
|
||||
|
||||
test "@hasField" {
|
||||
const struc = struct {
|
||||
a: i32,
|
||||
b: []u8,
|
||||
};
|
||||
expect(@hasField(struc, "a") == true);
|
||||
expect(@hasField(struc, "b") == true);
|
||||
expect(@hasField(struc, "non-existant") == false);
|
||||
|
||||
const unin = union {
|
||||
a: u64,
|
||||
b: []u16,
|
||||
};
|
||||
expect(@hasField(unin, "a") == true);
|
||||
expect(@hasField(unin, "b") == true);
|
||||
expect(@hasField(unin, "non-existant") == false);
|
||||
|
||||
const enm = enum {
|
||||
a,
|
||||
b,
|
||||
};
|
||||
expect(@hasField(enm, "a") == true);
|
||||
expect(@hasField(enm, "b") == true);
|
||||
expect(@hasField(enm, "non-existant") == false);
|
||||
|
||||
expect(@hasField(builtin, "os") == true);
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user