From d353d5aef8bfc5c701ab8958751ef74f6704342b Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 18 Sep 2018 09:49:57 -0400 Subject: [PATCH] fix @bytesToSlice on a packed struct closes #1551 --- src/ir.cpp | 3 +++ test/cases/eval.zig | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/ir.cpp b/src/ir.cpp index 0cb09df011..5da0008e03 100644 --- 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 index 5f456364a5..acb3da72c7 100644 --- 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); +}