allow const to be passed to @hasField()

Actually include the tests I wrote
This commit is contained in:
Shawn Landden 2019-05-27 00:35:35 -05:00
parent d1f9b8184d
commit 5a91dbc16c
2 changed files with 31 additions and 1 deletions

View File

@ -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.

View 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);
}