zig

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

commit 235b776d619d64dee62fc88e85bd53421cce37f7 (tree)
parent ab37ab33ce94b4fb6536bcc2f3981c0cc257c9f0
Author: Evin Yulo <yujiri@disroot.org>
Date:   Mon, 22 May 2023 15:45:39 -0400

fix #15778: Binary operations on empty vectors crash

Diffstat:
Msrc/value.zig | 1+
Mtest/behavior.zig | 1+
Atest/behavior/bugs/15778.zig | 25+++++++++++++++++++++++++
3 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/src/value.zig b/src/value.zig @@ -2208,6 +2208,7 @@ pub const Value = extern union { } return true; }, + .empty_array => return true, .str_lit => { const str_lit = lhs.castTag(.str_lit).?.data; const bytes = mod.string_literal_bytes.items[str_lit.index..][0..str_lit.len]; diff --git a/test/behavior.zig b/test/behavior.zig @@ -142,6 +142,7 @@ test { _ = @import("behavior/bugs/13714.zig"); _ = @import("behavior/bugs/13785.zig"); _ = @import("behavior/bugs/14854.zig"); + _ = @import("behavior/bugs/15778.zig"); _ = @import("behavior/byteswap.zig"); _ = @import("behavior/byval_arg_var.zig"); _ = @import("behavior/call.zig"); diff --git a/test/behavior/bugs/15778.zig b/test/behavior/bugs/15778.zig @@ -0,0 +1,25 @@ +const builtin = @import("builtin"); + +test { + if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO + const a = @Vector(0, i32){}; + const b = @Vector(0, i32){}; + _ = a + b; +} + +test { + if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO + const a = @Vector(0, f32){}; + const b = @Vector(0, f32){}; + _ = a - b; +}