#zig build-obj {
--name test -fno-emit-bin
-Mroot=test.zig
#}

#write test.zig {
export fn a() void {
    _ = @as(i32, 1) <<| @as(i32, -1);
}

comptime {
    var x: i32 = 1;
    x <<|= @as(i32, -2);
}

export fn b() void {
    _ = @Vector(1, i32){1} <<| @Vector(1, i32){-3};
}

comptime {
    var x: @Vector(2, i32) = .{ 1, 2 };
    x <<|= @Vector(2, i32){ 0, -4 };
}

export fn c(rhs: i32) void {
    _ = @as(i32, 1) <<| rhs;
}

export fn d(rhs: @Vector(3, i32)) void {
    _ = @Vector(3, i32){ 1, 2, 3 } <<| rhs;
}
#}
#update
#check errors {
test.zig:2:25: error: shift by negative amount '-1'
test.zig:7:12: error: shift by negative amount '-2'
test.zig:11:47: error: shift by negative amount '-3'
test.zig:11:47: note: when computing vector element at index '0'
test.zig:16:27: error: shift by negative amount '-4'
test.zig:16:27: note: when computing vector element at index '1'
test.zig:20:25: error: shift by signed type 'i32'
test.zig:24:40: error: shift by signed type '@Vector(3, i32)'
#}
