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 0cb09df0116b5b50ec656ed8c5eeb1a88c7fb961..5da0008e03620d54badc6a19d72d1e5dade41e41 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 5f456364a53b5ea1d80bcf23ad5ba91314de0533..acb3da72c7d2d4cad542c8a89bc0c3734217aae3 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); +} -- 2.54.0