zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit d353d5aef8bfc5c701ab8958751ef74f6704342b (tree)
parent 68c1d059178a36add751e97e11cee004cfdf612e
Author: Andrew Kelley <superjoe30@gmail.com>
Date:   Tue, 18 Sep 2018 09:49:57 -0400

fix @bytesToSlice on a packed struct

closes #1551

Diffstat:
Msrc/ir.cpp | 3+++
Mtest/cases/eval.zig | 10++++++++++
2 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/src/ir.cpp b/src/ir.cpp @@ -18516,6 +18516,9 @@ static ZigType *ir_analyze_instruction_from_bytes(IrAnalyze *ira, IrInstructionF src_ptr_align = get_abi_alignment(ira->codegen, target->value.type); } + if ((err = type_resolve(ira->codegen, dest_child_type, ResolveStatusSizeKnown))) + return ira->codegen->builtin_types.entry_invalid; + ZigType *dest_ptr_type = get_pointer_to_type_extra(ira->codegen, dest_child_type, src_ptr_const, src_ptr_volatile, PtrLenUnknown, src_ptr_align, 0, 0); diff --git a/test/cases/eval.zig b/test/cases/eval.zig @@ -700,3 +700,13 @@ test "@intCast to a u0" { var y: u0 = @intCast(u0, x); assert(y == 0); } + +test "@bytesToslice on a packed struct" { + const F = packed struct { + a: u8, + }; + + var b = [1]u8{9}; + var f = @bytesToSlice(F, b); + assert(f[0].a == 9); +}