fix #15778: Binary operations on empty vectors crash

This commit is contained in:
Evin Yulo 2023-05-22 15:45:39 -04:00 committed by Veikka Tuominen
parent ab37ab33ce
commit 235b776d61
3 changed files with 27 additions and 0 deletions

View File

@ -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];

View File

@ -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");

View File

@ -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;
}