Commit 5a91dbc16c
Changed files (2)
test
stage1
behavior
doc/langref.html.in
@@ -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.
test/stage1/behavior/hasfield.zig
@@ -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);
+}