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:
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);
+}