mirror of
https://github.com/ziglang/zig.git
synced 2026-01-05 13:03:25 +00:00
Merge pull request #10849 from sharpobject/sharpobject_fix_json_comptime_fields
std.json: fix compile error for comptime fields
This commit is contained in:
commit
3eb29f15f5
@ -1766,7 +1766,7 @@ fn parseInternal(
|
||||
}
|
||||
}
|
||||
if (field.is_comptime) {
|
||||
if (!try parsesTo(field.field_type, field.default_value.?, tokens, child_options)) {
|
||||
if (!try parsesTo(field.field_type, @ptrCast(*const field.field_type, field.default_value.?).*, tokens, child_options)) {
|
||||
return error.UnexpectedValue;
|
||||
}
|
||||
} else {
|
||||
|
||||
@ -466,6 +466,8 @@ test {
|
||||
pub fn refAllDecls(comptime T: type) void {
|
||||
if (!builtin.is_test) return;
|
||||
inline for (comptime std.meta.declarations(T)) |decl| {
|
||||
if (decl.is_pub and @typeInfo(@TypeOf(@field(T, decl.name))) == .Struct)
|
||||
_ = @hasDecl(@field(T, decl.name), "foo");
|
||||
_ = decl;
|
||||
}
|
||||
}
|
||||
|
||||
@ -166,7 +166,7 @@ pub fn sizeof(target: anytype) usize {
|
||||
const array_info = @typeInfo(ptr.child).Array;
|
||||
if ((array_info.child == u8 or array_info.child == u16) and
|
||||
array_info.sentinel != null and
|
||||
array_info.sentinel.? == 0)
|
||||
@ptrCast(*const array_info.child, array_info.sentinel.?).* == 0)
|
||||
{
|
||||
// length of the string plus one for the null terminator.
|
||||
return (array_info.len + 1) * @sizeOf(array_info.child);
|
||||
|
||||
@ -585,15 +585,6 @@ test "zig fmt: asm expression with comptime content" {
|
||||
);
|
||||
}
|
||||
|
||||
test "zig fmt: anytype struct field" {
|
||||
try testCanonical(
|
||||
\\pub const Pointer = struct {
|
||||
\\ sentinel: anytype,
|
||||
\\};
|
||||
\\
|
||||
);
|
||||
}
|
||||
|
||||
test "zig fmt: array types last token" {
|
||||
try testCanonical(
|
||||
\\test {
|
||||
@ -4148,6 +4139,17 @@ test "zig fmt: container doc comments" {
|
||||
);
|
||||
}
|
||||
|
||||
test "zig fmt: anytype struct field" {
|
||||
try testError(
|
||||
\\pub const Pointer = struct {
|
||||
\\ sentinel: anytype,
|
||||
\\};
|
||||
\\
|
||||
, &[_]Error{
|
||||
.expected_type_expr,
|
||||
});
|
||||
}
|
||||
|
||||
test "zig fmt: extern without container keyword returns error" {
|
||||
try testError(
|
||||
\\const container = extern {};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user