mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 13:54:21 +00:00
Merge pull request #22937 from alichraghi/ali_spv
spirv: make test suite working again
This commit is contained in:
commit
d856763aca
73 changed files with 659 additions and 121 deletions
|
|
@ -22,6 +22,11 @@ const crippled = switch (builtin.zig_backend) {
|
||||||
pub fn main() void {
|
pub fn main() void {
|
||||||
@disableInstrumentation();
|
@disableInstrumentation();
|
||||||
|
|
||||||
|
if (builtin.cpu.arch.isSpirV()) {
|
||||||
|
// SPIR-V needs an special test-runner
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (crippled) {
|
if (crippled) {
|
||||||
return mainSimple() catch @panic("test failure\n");
|
return mainSimple() catch @panic("test failure\n");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ pub const Feature = enum {
|
||||||
float64,
|
float64,
|
||||||
addresses,
|
addresses,
|
||||||
matrix,
|
matrix,
|
||||||
|
storage_push_constant16,
|
||||||
kernel,
|
kernel,
|
||||||
generic_pointer,
|
generic_pointer,
|
||||||
vector16,
|
vector16,
|
||||||
|
|
@ -35,92 +36,97 @@ pub const all_features = blk: {
|
||||||
var result: [len]CpuFeature = undefined;
|
var result: [len]CpuFeature = undefined;
|
||||||
result[@intFromEnum(Feature.v1_0)] = .{
|
result[@intFromEnum(Feature.v1_0)] = .{
|
||||||
.llvm_name = null,
|
.llvm_name = null,
|
||||||
.description = "SPIR-V version 1.0",
|
.description = "Enable version 1.0",
|
||||||
.dependencies = featureSet(&[_]Feature{}),
|
.dependencies = featureSet(&[_]Feature{}),
|
||||||
};
|
};
|
||||||
result[@intFromEnum(Feature.v1_1)] = .{
|
result[@intFromEnum(Feature.v1_1)] = .{
|
||||||
.llvm_name = null,
|
.llvm_name = null,
|
||||||
.description = "SPIR-V version 1.1",
|
.description = "Enable version 1.1",
|
||||||
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
||||||
};
|
};
|
||||||
result[@intFromEnum(Feature.v1_2)] = .{
|
result[@intFromEnum(Feature.v1_2)] = .{
|
||||||
.llvm_name = null,
|
.llvm_name = null,
|
||||||
.description = "SPIR-V version 1.2",
|
.description = "Enable version 1.2",
|
||||||
.dependencies = featureSet(&[_]Feature{.v1_1}),
|
.dependencies = featureSet(&[_]Feature{.v1_1}),
|
||||||
};
|
};
|
||||||
result[@intFromEnum(Feature.v1_3)] = .{
|
result[@intFromEnum(Feature.v1_3)] = .{
|
||||||
.llvm_name = null,
|
.llvm_name = null,
|
||||||
.description = "SPIR-V version 1.3",
|
.description = "Enable version 1.3",
|
||||||
.dependencies = featureSet(&[_]Feature{.v1_2}),
|
.dependencies = featureSet(&[_]Feature{.v1_2}),
|
||||||
};
|
};
|
||||||
result[@intFromEnum(Feature.v1_4)] = .{
|
result[@intFromEnum(Feature.v1_4)] = .{
|
||||||
.llvm_name = null,
|
.llvm_name = null,
|
||||||
.description = "SPIR-V version 1.4",
|
.description = "Enable version 1.4",
|
||||||
.dependencies = featureSet(&[_]Feature{.v1_3}),
|
.dependencies = featureSet(&[_]Feature{.v1_3}),
|
||||||
};
|
};
|
||||||
result[@intFromEnum(Feature.v1_5)] = .{
|
result[@intFromEnum(Feature.v1_5)] = .{
|
||||||
.llvm_name = null,
|
.llvm_name = null,
|
||||||
.description = "SPIR-V version 1.5",
|
.description = "Enable version 1.5",
|
||||||
.dependencies = featureSet(&[_]Feature{.v1_4}),
|
.dependencies = featureSet(&[_]Feature{.v1_4}),
|
||||||
};
|
};
|
||||||
result[@intFromEnum(Feature.v1_6)] = .{
|
result[@intFromEnum(Feature.v1_6)] = .{
|
||||||
.llvm_name = null,
|
.llvm_name = null,
|
||||||
.description = "SPIR-V version 1.6",
|
.description = "Enable version 1.6",
|
||||||
.dependencies = featureSet(&[_]Feature{.v1_5}),
|
.dependencies = featureSet(&[_]Feature{.v1_5}),
|
||||||
};
|
};
|
||||||
result[@intFromEnum(Feature.int8)] = .{
|
result[@intFromEnum(Feature.int8)] = .{
|
||||||
.llvm_name = null,
|
.llvm_name = null,
|
||||||
.description = "Enable SPIR-V capability Int8",
|
.description = "Enable Int8 capability",
|
||||||
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
||||||
};
|
};
|
||||||
result[@intFromEnum(Feature.int16)] = .{
|
result[@intFromEnum(Feature.int16)] = .{
|
||||||
.llvm_name = null,
|
.llvm_name = null,
|
||||||
.description = "Enable SPIR-V capability Int16",
|
.description = "Enable Int16 capability",
|
||||||
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
||||||
};
|
};
|
||||||
result[@intFromEnum(Feature.int64)] = .{
|
result[@intFromEnum(Feature.int64)] = .{
|
||||||
.llvm_name = null,
|
.llvm_name = null,
|
||||||
.description = "Enable SPIR-V capability Int64",
|
.description = "Enable Int64 capability",
|
||||||
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
||||||
};
|
};
|
||||||
result[@intFromEnum(Feature.float16)] = .{
|
result[@intFromEnum(Feature.float16)] = .{
|
||||||
.llvm_name = null,
|
.llvm_name = null,
|
||||||
.description = "Enable SPIR-V capability Float16",
|
.description = "Enable Float16 capability",
|
||||||
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
||||||
};
|
};
|
||||||
result[@intFromEnum(Feature.float64)] = .{
|
result[@intFromEnum(Feature.float64)] = .{
|
||||||
.llvm_name = null,
|
.llvm_name = null,
|
||||||
.description = "Enable SPIR-V capability Float64",
|
.description = "Enable Float64 capability",
|
||||||
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
||||||
};
|
};
|
||||||
result[@intFromEnum(Feature.addresses)] = .{
|
result[@intFromEnum(Feature.addresses)] = .{
|
||||||
.llvm_name = null,
|
.llvm_name = null,
|
||||||
.description = "Enable SPIR-V capability Addresses",
|
.description = "Enable either the Addresses capability or, SPV_KHR_physical_storage_buffer extension and the PhysicalStorageBufferAddresses capability",
|
||||||
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
||||||
};
|
};
|
||||||
result[@intFromEnum(Feature.matrix)] = .{
|
result[@intFromEnum(Feature.matrix)] = .{
|
||||||
.llvm_name = null,
|
.llvm_name = null,
|
||||||
.description = "Enable SPIR-V capability Matrix",
|
.description = "Enable Matrix capability",
|
||||||
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
||||||
};
|
};
|
||||||
|
result[@intFromEnum(Feature.storage_push_constant16)] = .{
|
||||||
|
.llvm_name = null,
|
||||||
|
.description = "Enable SPV_KHR_16bit_storage extension and the StoragePushConstant16 capability",
|
||||||
|
.dependencies = featureSet(&[_]Feature{.v1_3}),
|
||||||
|
};
|
||||||
result[@intFromEnum(Feature.kernel)] = .{
|
result[@intFromEnum(Feature.kernel)] = .{
|
||||||
.llvm_name = null,
|
.llvm_name = null,
|
||||||
.description = "Enable SPIR-V capability Kernel",
|
.description = "Enable Kernel capability",
|
||||||
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
||||||
};
|
};
|
||||||
result[@intFromEnum(Feature.generic_pointer)] = .{
|
result[@intFromEnum(Feature.generic_pointer)] = .{
|
||||||
.llvm_name = null,
|
.llvm_name = null,
|
||||||
.description = "Enable SPIR-V capability GenericPointer",
|
.description = "Enable GenericPointer capability",
|
||||||
.dependencies = featureSet(&[_]Feature{ .v1_0, .addresses }),
|
.dependencies = featureSet(&[_]Feature{ .v1_0, .addresses }),
|
||||||
};
|
};
|
||||||
result[@intFromEnum(Feature.vector16)] = .{
|
result[@intFromEnum(Feature.vector16)] = .{
|
||||||
.llvm_name = null,
|
.llvm_name = null,
|
||||||
.description = "Enable SPIR-V capability Vector16",
|
.description = "Enable Vector16 capability",
|
||||||
.dependencies = featureSet(&[_]Feature{ .v1_0, .kernel }),
|
.dependencies = featureSet(&[_]Feature{ .v1_0, .kernel }),
|
||||||
};
|
};
|
||||||
result[@intFromEnum(Feature.shader)] = .{
|
result[@intFromEnum(Feature.shader)] = .{
|
||||||
.llvm_name = null,
|
.llvm_name = null,
|
||||||
.description = "Enable SPIR-V capability Shader",
|
.description = "Enable Shader capability",
|
||||||
.dependencies = featureSet(&[_]Feature{ .v1_0, .matrix }),
|
.dependencies = featureSet(&[_]Feature{ .v1_0, .matrix }),
|
||||||
};
|
};
|
||||||
const ti = @typeInfo(Feature);
|
const ti = @typeInfo(Feature);
|
||||||
|
|
|
||||||
|
|
@ -3463,7 +3463,15 @@ fn clearCachedResolvedReferences(zcu: *Zcu) void {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn errorSetBits(zcu: *const Zcu) u16 {
|
pub fn errorSetBits(zcu: *const Zcu) u16 {
|
||||||
|
const target = zcu.getTarget();
|
||||||
|
|
||||||
if (zcu.error_limit == 0) return 0;
|
if (zcu.error_limit == 0) return 0;
|
||||||
|
if (target.cpu.arch == .spirv64) {
|
||||||
|
if (!std.Target.spirv.featureSetHas(target.cpu.features, .storage_push_constant16)) {
|
||||||
|
return 32;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return @as(u16, std.math.log2_int(ErrorInt, zcu.error_limit)) + 1;
|
return @as(u16, std.math.log2_int(ErrorInt, zcu.error_limit)) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1018,7 +1018,7 @@ const NavGen = struct {
|
||||||
const comp_ty_id = try self.resolveType(ty, .direct);
|
const comp_ty_id = try self.resolveType(ty, .direct);
|
||||||
return try self.constructComposite(comp_ty_id, constituents.items);
|
return try self.constructComposite(comp_ty_id, constituents.items);
|
||||||
},
|
},
|
||||||
.tuple_type => unreachable, // TODO
|
.tuple_type => return self.todo("implement tuple types", .{}),
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
},
|
},
|
||||||
.un => |un| {
|
.un => |un| {
|
||||||
|
|
@ -1255,6 +1255,7 @@ const NavGen = struct {
|
||||||
|
|
||||||
fn ptrType(self: *NavGen, child_ty: Type, storage_class: StorageClass, child_repr: Repr) !IdRef {
|
fn ptrType(self: *NavGen, child_ty: Type, storage_class: StorageClass, child_repr: Repr) !IdRef {
|
||||||
const zcu = self.pt.zcu;
|
const zcu = self.pt.zcu;
|
||||||
|
const ip = &zcu.intern_pool;
|
||||||
const key = .{ child_ty.toIntern(), storage_class, child_repr };
|
const key = .{ child_ty.toIntern(), storage_class, child_repr };
|
||||||
const entry = try self.ptr_types.getOrPut(self.gpa, key);
|
const entry = try self.ptr_types.getOrPut(self.gpa, key);
|
||||||
if (entry.found_existing) {
|
if (entry.found_existing) {
|
||||||
|
|
@ -1285,7 +1286,12 @@ const NavGen = struct {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try self.spv.decorate(result_id, .{ .ArrayStride = .{ .array_stride = @intCast(child_ty.abiSize(zcu)) } });
|
switch (ip.indexToKey(child_ty.toIntern())) {
|
||||||
|
.func_type, .opaque_type => {},
|
||||||
|
else => {
|
||||||
|
try self.spv.decorate(result_id, .{ .ArrayStride = .{ .array_stride = @intCast(child_ty.abiSize(zcu)) } });
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try self.spv.sections.types_globals_constants.emit(self.spv.gpa, .OpTypePointer, .{
|
try self.spv.sections.types_globals_constants.emit(self.spv.gpa, .OpTypePointer, .{
|
||||||
|
|
@ -1294,6 +1300,8 @@ const NavGen = struct {
|
||||||
.type = child_ty_id,
|
.type = child_ty_id,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
self.ptr_types.getPtr(key).?.fwd_emitted = true;
|
||||||
|
|
||||||
return result_id;
|
return result_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1704,7 +1712,10 @@ const NavGen = struct {
|
||||||
return result_id;
|
return result_id;
|
||||||
},
|
},
|
||||||
.@"union" => return try self.resolveUnionType(ty),
|
.@"union" => return try self.resolveUnionType(ty),
|
||||||
.error_set => return try self.resolveType(Type.u16, repr),
|
.error_set => {
|
||||||
|
const err_int_ty = try pt.errorIntType();
|
||||||
|
return try self.resolveType(err_int_ty, repr);
|
||||||
|
},
|
||||||
.error_union => {
|
.error_union => {
|
||||||
const payload_ty = ty.errorUnionPayload(zcu);
|
const payload_ty = ty.errorUnionPayload(zcu);
|
||||||
const error_ty_id = try self.resolveType(Type.anyerror, .indirect);
|
const error_ty_id = try self.resolveType(Type.anyerror, .indirect);
|
||||||
|
|
@ -2329,7 +2340,7 @@ const NavGen = struct {
|
||||||
// NOTE: Vulkan's FMA instruction does *NOT* produce the right values!
|
// NOTE: Vulkan's FMA instruction does *NOT* produce the right values!
|
||||||
// its precision guarantees do NOT match zigs and it does NOT match OpenCLs!
|
// its precision guarantees do NOT match zigs and it does NOT match OpenCLs!
|
||||||
// it needs to be emulated!
|
// it needs to be emulated!
|
||||||
.vulkan, .opengl => unreachable, // TODO: See above
|
.vulkan, .opengl => return self.todo("implement fma operation for {s} os", .{@tagName(target.os.tag)}),
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -2529,12 +2540,12 @@ const NavGen = struct {
|
||||||
.vulkan, .opengl => switch (op) {
|
.vulkan, .opengl => switch (op) {
|
||||||
.i_abs => 5, // SAbs
|
.i_abs => 5, // SAbs
|
||||||
.f_abs => 4, // FAbs
|
.f_abs => 4, // FAbs
|
||||||
.clz => unreachable, // TODO
|
|
||||||
.ctz => unreachable, // TODO
|
|
||||||
.floor => 8, // Floor
|
.floor => 8, // Floor
|
||||||
.ceil => 9, // Ceil
|
.ceil => 9, // Ceil
|
||||||
.trunc => 3, // Trunc
|
.trunc => 3, // Trunc
|
||||||
.round => 1, // Round
|
.round => 1, // Round
|
||||||
|
.clz,
|
||||||
|
.ctz,
|
||||||
.sqrt,
|
.sqrt,
|
||||||
.sin,
|
.sin,
|
||||||
.cos,
|
.cos,
|
||||||
|
|
@ -2544,7 +2555,7 @@ const NavGen = struct {
|
||||||
.log,
|
.log,
|
||||||
.log2,
|
.log2,
|
||||||
.log10,
|
.log10,
|
||||||
=> unreachable, // TODO
|
=> return self.todo("implement unary operation '{s}' for {s} os", .{ @tagName(op), @tagName(target.os.tag) }),
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
},
|
},
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
|
|
@ -2810,6 +2821,8 @@ const NavGen = struct {
|
||||||
/// TODO is to also write out the error as a function call parameter, and to somehow fetch
|
/// TODO is to also write out the error as a function call parameter, and to somehow fetch
|
||||||
/// the name of an error in the text executor.
|
/// the name of an error in the text executor.
|
||||||
fn generateTestEntryPoint(self: *NavGen, name: []const u8, spv_test_decl_index: SpvModule.Decl.Index) !void {
|
fn generateTestEntryPoint(self: *NavGen, name: []const u8, spv_test_decl_index: SpvModule.Decl.Index) !void {
|
||||||
|
const target = self.spv.target;
|
||||||
|
|
||||||
const anyerror_ty_id = try self.resolveType(Type.anyerror, .direct);
|
const anyerror_ty_id = try self.resolveType(Type.anyerror, .direct);
|
||||||
const ptr_anyerror_ty = try self.pt.ptrType(.{
|
const ptr_anyerror_ty = try self.pt.ptrType(.{
|
||||||
.child = Type.anyerror.toIntern(),
|
.child = Type.anyerror.toIntern(),
|
||||||
|
|
@ -2819,13 +2832,13 @@ const NavGen = struct {
|
||||||
|
|
||||||
const spv_decl_index = try self.spv.allocDecl(.func);
|
const spv_decl_index = try self.spv.allocDecl(.func);
|
||||||
const kernel_id = self.spv.declPtr(spv_decl_index).result_id;
|
const kernel_id = self.spv.declPtr(spv_decl_index).result_id;
|
||||||
// for some reason we don't need to decorate the push constant here...
|
|
||||||
try self.spv.declareDeclDeps(spv_decl_index, &.{spv_test_decl_index});
|
var decl_deps = std.ArrayList(SpvModule.Decl.Index).init(self.gpa);
|
||||||
|
defer decl_deps.deinit();
|
||||||
|
try decl_deps.append(spv_test_decl_index);
|
||||||
|
|
||||||
const section = &self.spv.sections.functions;
|
const section = &self.spv.sections.functions;
|
||||||
|
|
||||||
const target = self.spv.target;
|
|
||||||
|
|
||||||
const p_error_id = self.spv.allocId();
|
const p_error_id = self.spv.allocId();
|
||||||
switch (target.os.tag) {
|
switch (target.os.tag) {
|
||||||
.opencl => {
|
.opencl => {
|
||||||
|
|
@ -2904,6 +2917,7 @@ const NavGen = struct {
|
||||||
|
|
||||||
const spv_err_decl_index = self.object.error_push_constant.?.push_constant_ptr;
|
const spv_err_decl_index = self.object.error_push_constant.?.push_constant_ptr;
|
||||||
const push_constant_id = self.spv.declPtr(spv_err_decl_index).result_id;
|
const push_constant_id = self.spv.declPtr(spv_err_decl_index).result_id;
|
||||||
|
try decl_deps.append(spv_err_decl_index);
|
||||||
|
|
||||||
const zero_id = try self.constInt(Type.u32, 0);
|
const zero_id = try self.constInt(Type.u32, 0);
|
||||||
// We cannot use OpInBoundsAccessChain to dereference cross-storage class, so we have to use
|
// We cannot use OpInBoundsAccessChain to dereference cross-storage class, so we have to use
|
||||||
|
|
@ -2953,6 +2967,7 @@ const NavGen = struct {
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
try self.spv.declareDeclDeps(spv_decl_index, decl_deps.items);
|
||||||
try self.spv.declareEntryPoint(spv_decl_index, test_name, execution_mode);
|
try self.spv.declareEntryPoint(spv_decl_index, test_name, execution_mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3372,6 +3387,7 @@ const NavGen = struct {
|
||||||
.switch_br => return self.airSwitchBr(inst),
|
.switch_br => return self.airSwitchBr(inst),
|
||||||
.unreach, .trap => return self.airUnreach(),
|
.unreach, .trap => return self.airUnreach(),
|
||||||
|
|
||||||
|
.dbg_empty_stmt => return,
|
||||||
.dbg_stmt => return self.airDbgStmt(inst),
|
.dbg_stmt => return self.airDbgStmt(inst),
|
||||||
.dbg_inline_block => try self.airDbgInlineBlock(inst),
|
.dbg_inline_block => try self.airDbgInlineBlock(inst),
|
||||||
.dbg_var_ptr, .dbg_var_val, .dbg_arg_inline => return self.airDbgVar(inst),
|
.dbg_var_ptr, .dbg_var_val, .dbg_arg_inline => return self.airDbgVar(inst),
|
||||||
|
|
@ -3651,6 +3667,7 @@ const NavGen = struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn abs(self: *NavGen, result_ty: Type, value: Temporary) !Temporary {
|
fn abs(self: *NavGen, result_ty: Type, value: Temporary) !Temporary {
|
||||||
|
const zcu = self.pt.zcu;
|
||||||
const operand_info = self.arithmeticTypeInfo(value.ty);
|
const operand_info = self.arithmeticTypeInfo(value.ty);
|
||||||
|
|
||||||
switch (operand_info.class) {
|
switch (operand_info.class) {
|
||||||
|
|
@ -3658,11 +3675,9 @@ const NavGen = struct {
|
||||||
.integer, .strange_integer => {
|
.integer, .strange_integer => {
|
||||||
const abs_value = try self.buildUnary(.i_abs, value);
|
const abs_value = try self.buildUnary(.i_abs, value);
|
||||||
|
|
||||||
// TODO: We may need to bitcast the result to a uint
|
if (value.ty.intInfo(zcu).signedness == .signed and self.spv.hasFeature(.shader)) {
|
||||||
// depending on the result type. Do that when
|
return self.todo("perform bitcast after @abs", .{});
|
||||||
// bitCast is implemented for vectors.
|
}
|
||||||
// This is only relevant for Vulkan
|
|
||||||
assert(self.spv.hasFeature(.kernel)); // TODO
|
|
||||||
|
|
||||||
return try self.normalize(abs_value, self.arithmeticTypeInfo(result_ty));
|
return try self.normalize(abs_value, self.arithmeticTypeInfo(result_ty));
|
||||||
},
|
},
|
||||||
|
|
@ -3980,8 +3995,6 @@ const NavGen = struct {
|
||||||
.float, .bool => unreachable,
|
.float, .bool => unreachable,
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(self.spv.hasFeature(.kernel)); // TODO
|
|
||||||
|
|
||||||
const count = try self.buildUnary(op, operand);
|
const count = try self.buildUnary(op, operand);
|
||||||
|
|
||||||
// Result of OpenCL ctz/clz returns operand.ty, and we want result_ty.
|
// Result of OpenCL ctz/clz returns operand.ty, and we want result_ty.
|
||||||
|
|
@ -4307,7 +4320,8 @@ const NavGen = struct {
|
||||||
},
|
},
|
||||||
.error_set => {
|
.error_set => {
|
||||||
assert(!is_vector);
|
assert(!is_vector);
|
||||||
return try self.cmp(op, lhs.pun(Type.u16), rhs.pun(Type.u16));
|
const err_int_ty = try pt.errorIntType();
|
||||||
|
return try self.cmp(op, lhs.pun(err_int_ty), rhs.pun(err_int_ty));
|
||||||
},
|
},
|
||||||
.pointer => {
|
.pointer => {
|
||||||
assert(!is_vector);
|
assert(!is_vector);
|
||||||
|
|
@ -4411,7 +4425,7 @@ const NavGen = struct {
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
else => unreachable,
|
else => |ty| return self.todo("implement cmp operation for '{s}' type", .{@tagName(ty)}),
|
||||||
}
|
}
|
||||||
|
|
||||||
const info = self.arithmeticTypeInfo(scalar_ty);
|
const info = self.arithmeticTypeInfo(scalar_ty);
|
||||||
|
|
@ -5233,13 +5247,13 @@ const NavGen = struct {
|
||||||
return self.accessChain(result_ty_id, object_ptr, &.{field_index});
|
return self.accessChain(result_ty_id, object_ptr, &.{field_index});
|
||||||
},
|
},
|
||||||
.@"struct" => switch (object_ty.containerLayout(zcu)) {
|
.@"struct" => switch (object_ty.containerLayout(zcu)) {
|
||||||
.@"packed" => unreachable, // TODO
|
.@"packed" => return self.todo("implement field access for packed structs", .{}),
|
||||||
else => {
|
else => {
|
||||||
return try self.accessChain(result_ty_id, object_ptr, &.{field_index});
|
return try self.accessChain(result_ty_id, object_ptr, &.{field_index});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
.@"union" => switch (object_ty.containerLayout(zcu)) {
|
.@"union" => switch (object_ty.containerLayout(zcu)) {
|
||||||
.@"packed" => unreachable, // TODO
|
.@"packed" => return self.todo("implement field access for packed unions", .{}),
|
||||||
else => {
|
else => {
|
||||||
const layout = self.unionLayout(object_ty);
|
const layout = self.unionLayout(object_ty);
|
||||||
if (!layout.has_payload) {
|
if (!layout.has_payload) {
|
||||||
|
|
|
||||||
|
|
@ -21,19 +21,6 @@ const IdResultType = spec.IdResultType;
|
||||||
|
|
||||||
const Section = @import("Section.zig");
|
const Section = @import("Section.zig");
|
||||||
|
|
||||||
/// Helper HashMap type to hash deeply
|
|
||||||
fn DeepHashMap(K: type, V: type) type {
|
|
||||||
return std.HashMapUnmanaged(K, V, struct {
|
|
||||||
pub fn hash(ctx: @This(), key: K) u64 {
|
|
||||||
_ = ctx;
|
|
||||||
var hasher = Wyhash.init(0);
|
|
||||||
autoHashStrat(&hasher, key, .Deep);
|
|
||||||
return hasher.final();
|
|
||||||
}
|
|
||||||
pub const eql = std.hash_map.getAutoEqlFn(K, @This());
|
|
||||||
}, std.hash_map.default_max_load_percentage);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// This structure represents a function that isc in-progress of being emitted.
|
/// This structure represents a function that isc in-progress of being emitted.
|
||||||
/// Commonly, the contents of this structure will be merged with the appropriate
|
/// Commonly, the contents of this structure will be merged with the appropriate
|
||||||
/// sections of the module and re-used. Note that the SPIR-V module system makes
|
/// sections of the module and re-used. Note that the SPIR-V module system makes
|
||||||
|
|
@ -181,7 +168,6 @@ cache: struct {
|
||||||
// same ID as @Vector(X, bool) in indirect representation.
|
// same ID as @Vector(X, bool) in indirect representation.
|
||||||
vector_types: std.AutoHashMapUnmanaged(struct { IdRef, u32 }, IdRef) = .empty,
|
vector_types: std.AutoHashMapUnmanaged(struct { IdRef, u32 }, IdRef) = .empty,
|
||||||
array_types: std.AutoHashMapUnmanaged(struct { IdRef, IdRef }, IdRef) = .empty,
|
array_types: std.AutoHashMapUnmanaged(struct { IdRef, IdRef }, IdRef) = .empty,
|
||||||
function_types: DeepHashMap(struct { IdRef, []const IdRef }, IdRef) = .empty,
|
|
||||||
|
|
||||||
capabilities: std.AutoHashMapUnmanaged(spec.Capability, void) = .empty,
|
capabilities: std.AutoHashMapUnmanaged(spec.Capability, void) = .empty,
|
||||||
extensions: std.StringHashMapUnmanaged(void) = .empty,
|
extensions: std.StringHashMapUnmanaged(void) = .empty,
|
||||||
|
|
@ -241,7 +227,6 @@ pub fn deinit(self: *Module) void {
|
||||||
self.cache.float_types.deinit(self.gpa);
|
self.cache.float_types.deinit(self.gpa);
|
||||||
self.cache.vector_types.deinit(self.gpa);
|
self.cache.vector_types.deinit(self.gpa);
|
||||||
self.cache.array_types.deinit(self.gpa);
|
self.cache.array_types.deinit(self.gpa);
|
||||||
self.cache.function_types.deinit(self.gpa);
|
|
||||||
self.cache.capabilities.deinit(self.gpa);
|
self.cache.capabilities.deinit(self.gpa);
|
||||||
self.cache.extensions.deinit(self.gpa);
|
self.cache.extensions.deinit(self.gpa);
|
||||||
self.cache.extended_instruction_set.deinit(self.gpa);
|
self.cache.extended_instruction_set.deinit(self.gpa);
|
||||||
|
|
@ -345,22 +330,30 @@ pub fn finalize(self: *Module, a: Allocator) ![]Word {
|
||||||
if (self.target.cpu.features.isEnabled(feature.index)) {
|
if (self.target.cpu.features.isEnabled(feature.index)) {
|
||||||
const feature_tag: std.Target.spirv.Feature = @enumFromInt(feature.index);
|
const feature_tag: std.Target.spirv.Feature = @enumFromInt(feature.index);
|
||||||
switch (feature_tag) {
|
switch (feature_tag) {
|
||||||
|
// Versions
|
||||||
.v1_0, .v1_1, .v1_2, .v1_3, .v1_4, .v1_5, .v1_6 => {},
|
.v1_0, .v1_1, .v1_2, .v1_3, .v1_4, .v1_5, .v1_6 => {},
|
||||||
|
// Features with no dependencies
|
||||||
.int8 => try self.addCapability(.Int8),
|
.int8 => try self.addCapability(.Int8),
|
||||||
.int16 => try self.addCapability(.Int16),
|
.int16 => try self.addCapability(.Int16),
|
||||||
.int64 => try self.addCapability(.Int64),
|
.int64 => try self.addCapability(.Int64),
|
||||||
.float16 => try self.addCapability(.Float16),
|
.float16 => try self.addCapability(.Float16),
|
||||||
.float64 => try self.addCapability(.Float64),
|
.float64 => try self.addCapability(.Float64),
|
||||||
|
.matrix => try self.addCapability(.Matrix),
|
||||||
|
.storage_push_constant16 => {
|
||||||
|
try self.addExtension("SPV_KHR_16bit_storage");
|
||||||
|
try self.addCapability(.StoragePushConstant16);
|
||||||
|
},
|
||||||
.addresses => if (self.hasFeature(.shader)) {
|
.addresses => if (self.hasFeature(.shader)) {
|
||||||
try self.addCapability(.PhysicalStorageBufferAddresses);
|
|
||||||
try self.addExtension("SPV_KHR_physical_storage_buffer");
|
try self.addExtension("SPV_KHR_physical_storage_buffer");
|
||||||
|
try self.addCapability(.PhysicalStorageBufferAddresses);
|
||||||
} else {
|
} else {
|
||||||
try self.addCapability(.Addresses);
|
try self.addCapability(.Addresses);
|
||||||
},
|
},
|
||||||
.matrix => try self.addCapability(.Matrix),
|
// Kernel
|
||||||
.kernel => try self.addCapability(.Kernel),
|
.kernel => try self.addCapability(.Kernel),
|
||||||
.generic_pointer => try self.addCapability(.GenericPointer),
|
.generic_pointer => try self.addCapability(.GenericPointer),
|
||||||
.vector16 => try self.addCapability(.Vector16),
|
.vector16 => try self.addCapability(.Vector16),
|
||||||
|
// Shader
|
||||||
.shader => try self.addCapability(.Shader),
|
.shader => try self.addCapability(.Shader),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -608,17 +601,13 @@ pub fn arrayType(self: *Module, len_id: IdRef, child_ty_id: IdRef) !IdRef {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn functionType(self: *Module, return_ty_id: IdRef, param_type_ids: []const IdRef) !IdRef {
|
pub fn functionType(self: *Module, return_ty_id: IdRef, param_type_ids: []const IdRef) !IdRef {
|
||||||
const entry = try self.cache.function_types.getOrPut(self.gpa, .{ return_ty_id, param_type_ids });
|
const result_id = self.allocId();
|
||||||
if (!entry.found_existing) {
|
try self.sections.types_globals_constants.emit(self.gpa, .OpTypeFunction, .{
|
||||||
const result_id = self.allocId();
|
.id_result = result_id,
|
||||||
entry.value_ptr.* = result_id;
|
.return_type = return_ty_id,
|
||||||
try self.sections.types_globals_constants.emit(self.gpa, .OpTypeFunction, .{
|
.id_ref_2 = param_type_ids,
|
||||||
.id_result = result_id,
|
});
|
||||||
.return_type = return_ty_id,
|
return result_id;
|
||||||
.id_ref_2 = param_type_ids,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return entry.value_ptr.*;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn constBool(self: *Module, value: bool) !IdRef {
|
pub fn constBool(self: *Module, value: bool) !IdRef {
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ fn canPrune(op: Opcode) bool {
|
||||||
.Arithmetic,
|
.Arithmetic,
|
||||||
.RelationalAndLogical,
|
.RelationalAndLogical,
|
||||||
.Bit,
|
.Bit,
|
||||||
|
.Annotation,
|
||||||
=> true,
|
=> true,
|
||||||
else => switch (op) {
|
else => switch (op) {
|
||||||
.OpFunction,
|
.OpFunction,
|
||||||
|
|
@ -273,7 +274,7 @@ pub fn run(parser: *BinaryModule.Parser, binary: *BinaryModule, progress: std.Pr
|
||||||
.alive = try std.DynamicBitSetUnmanaged.initEmpty(a, info.result_id_to_code_offset.count()),
|
.alive = try std.DynamicBitSetUnmanaged.initEmpty(a, info.result_id_to_code_offset.count()),
|
||||||
};
|
};
|
||||||
|
|
||||||
// Mark initial stuff as slive
|
// Mark initial stuff as alive
|
||||||
{
|
{
|
||||||
var it = binary.iterateInstructions();
|
var it = binary.iterateInstructions();
|
||||||
while (it.next()) |inst| {
|
while (it.next()) |inst| {
|
||||||
|
|
|
||||||
|
|
@ -112,11 +112,11 @@ test {
|
||||||
|
|
||||||
_ = @import("behavior/x86_64.zig");
|
_ = @import("behavior/x86_64.zig");
|
||||||
|
|
||||||
if (builtin.cpu.arch == .wasm32) {
|
if (builtin.zig_backend != .stage2_spirv64 and builtin.cpu.arch == .wasm32) {
|
||||||
_ = @import("behavior/wasm.zig");
|
_ = @import("behavior/wasm.zig");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (builtin.os.tag != .wasi) {
|
if (builtin.zig_backend != .stage2_spirv64 and builtin.os.tag != .wasi) {
|
||||||
_ = @import("behavior/asm.zig");
|
_ = @import("behavior/asm.zig");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -127,7 +127,7 @@ test {
|
||||||
_ = @import("behavior/export_keyword.zig");
|
_ = @import("behavior/export_keyword.zig");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!builtin.cpu.arch.isWasm()) {
|
if (builtin.zig_backend != .stage2_spirv64 and !builtin.cpu.arch.isWasm()) {
|
||||||
// Due to lack of import/export of global support
|
// Due to lack of import/export of global support
|
||||||
// (https://github.com/ziglang/zig/issues/4866), these tests correctly
|
// (https://github.com/ziglang/zig/issues/4866), these tests correctly
|
||||||
// cause linker errors, since a data symbol cannot be exported when
|
// cause linker errors, since a data symbol cannot be exported when
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ test "@abs integers" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try comptime testAbsIntegers();
|
try comptime testAbsIntegers();
|
||||||
try testAbsIntegers();
|
try testAbsIntegers();
|
||||||
|
|
@ -215,6 +216,7 @@ test "@abs int vectors" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try comptime testAbsIntVectors(1);
|
try comptime testAbsIntVectors(1);
|
||||||
try testAbsIntVectors(1);
|
try testAbsIntVectors(1);
|
||||||
|
|
@ -281,6 +283,7 @@ test "@abs unsigned int vectors" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try comptime testAbsUnsignedIntVectors(1);
|
try comptime testAbsUnsignedIntVectors(1);
|
||||||
try testAbsUnsignedIntVectors(1);
|
try testAbsUnsignedIntVectors(1);
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,8 @@ test "addrspace and linksection on container-level var" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "addrspace on fn" {
|
test "addrspace on fn" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn f() addrspace(.generic) u32 {
|
fn f() addrspace(.generic) u32 {
|
||||||
return 123;
|
return 123;
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,8 @@ fn addUnaligned(a: *align(1) const u32, b: *align(1) const u32) u32 {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "@alignCast pointers" {
|
test "@alignCast pointers" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var x: u32 align(4) = 1;
|
var x: u32 align(4) = 1;
|
||||||
expectsOnly1(&x);
|
expectsOnly1(&x);
|
||||||
try expect(x == 2);
|
try expect(x == 2);
|
||||||
|
|
@ -199,6 +201,7 @@ test "alignment and size of structs with 128-bit fields" {
|
||||||
test "implicitly decreasing slice alignment" {
|
test "implicitly decreasing slice alignment" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const a: u32 align(4) = 3;
|
const a: u32 align(4) = 3;
|
||||||
const b: u32 align(8) = 4;
|
const b: u32 align(8) = 4;
|
||||||
|
|
@ -211,6 +214,7 @@ fn addUnalignedSlice(a: []align(1) const u32, b: []align(1) const u32) u32 {
|
||||||
test "specifying alignment allows pointer cast" {
|
test "specifying alignment allows pointer cast" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testBytesAlign(0x33);
|
try testBytesAlign(0x33);
|
||||||
}
|
}
|
||||||
|
|
@ -276,6 +280,7 @@ test "function alignment" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
// function alignment is a compile error on wasm
|
// function alignment is a compile error on wasm
|
||||||
if (native_arch.isWasm()) return error.SkipZigTest;
|
if (native_arch.isWasm()) return error.SkipZigTest;
|
||||||
|
|
@ -349,6 +354,7 @@ fn simple4() align(4) i32 {
|
||||||
|
|
||||||
test "runtime-known array index has best alignment possible" {
|
test "runtime-known array index has best alignment possible" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
// take full advantage of over-alignment
|
// take full advantage of over-alignment
|
||||||
var array align(4) = [_]u8{ 1, 2, 3, 4 };
|
var array align(4) = [_]u8{ 1, 2, 3, 4 };
|
||||||
|
|
@ -485,6 +491,7 @@ test "align(N) on functions" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
if (builtin.zig_backend == .stage2_c) {
|
if (builtin.zig_backend == .stage2_c) {
|
||||||
// https://github.com/ziglang/zig/issues/16845
|
// https://github.com/ziglang/zig/issues/16845
|
||||||
|
|
@ -525,6 +532,7 @@ test "comptime alloc alignment" {
|
||||||
test "@alignCast null" {
|
test "@alignCast null" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var ptr: ?*anyopaque = null;
|
var ptr: ?*anyopaque = null;
|
||||||
_ = &ptr;
|
_ = &ptr;
|
||||||
|
|
@ -541,6 +549,7 @@ test "sub-aligned pointer field access" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
// Originally reported at https://github.com/ziglang/zig/issues/14904
|
// Originally reported at https://github.com/ziglang/zig/issues/14904
|
||||||
|
|
||||||
|
|
@ -615,6 +624,8 @@ test "zero-bit fields in extern struct pad fields appropriately" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "function pointer @intFromPtr/@ptrFromInt roundtrip" {
|
test "function pointer @intFromPtr/@ptrFromInt roundtrip" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
// This only succeeds on Thumb if we handle the Thumb bit correctly; if not, the `@ptrFromInt`
|
// This only succeeds on Thumb if we handle the Thumb bit correctly; if not, the `@ptrFromInt`
|
||||||
// will incorrectly trip an alignment safety check.
|
// will incorrectly trip an alignment safety check.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,8 @@ test "comparison of @alignOf(T) against zero" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "correct alignment for elements and slices of aligned array" {
|
test "correct alignment for elements and slices of aligned array" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var buf: [1024]u8 align(64) = undefined;
|
var buf: [1024]u8 align(64) = undefined;
|
||||||
var start: usize = 1;
|
var start: usize = 1;
|
||||||
var end: usize = undefined;
|
var end: usize = undefined;
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ fn getArrayLen(a: []const u32) usize {
|
||||||
test "array concat with undefined" {
|
test "array concat with undefined" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -70,6 +71,7 @@ test "array concat with undefined" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "array concat with tuple" {
|
test "array concat with tuple" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
@ -86,6 +88,7 @@ test "array concat with tuple" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "array init with concat" {
|
test "array init with concat" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
const a = 'a';
|
const a = 'a';
|
||||||
|
|
@ -94,6 +97,7 @@ test "array init with concat" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "array init with mult" {
|
test "array init with mult" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
|
|
@ -157,6 +161,7 @@ test "array len field" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "array with sentinels" {
|
test "array with sentinels" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
|
|
@ -194,6 +199,7 @@ test "void arrays" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "nested arrays of strings" {
|
test "nested arrays of strings" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
@ -239,6 +245,7 @@ fn plusOne(x: u32) u32 {
|
||||||
test "single-item pointer to array indexing and slicing" {
|
test "single-item pointer to array indexing and slicing" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testSingleItemPtrArrayIndexSlice();
|
try testSingleItemPtrArrayIndexSlice();
|
||||||
try comptime testSingleItemPtrArrayIndexSlice();
|
try comptime testSingleItemPtrArrayIndexSlice();
|
||||||
|
|
@ -300,6 +307,7 @@ var s_array: [8]Sub = undefined;
|
||||||
const Sub = struct { b: u8 };
|
const Sub = struct { b: u8 };
|
||||||
const Str = struct { a: []Sub };
|
const Str = struct { a: []Sub };
|
||||||
test "set global var array via slice embedded in struct" {
|
test "set global var array via slice embedded in struct" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
|
|
@ -336,6 +344,7 @@ test "read/write through global variable array of struct fields initialized via
|
||||||
}
|
}
|
||||||
|
|
||||||
test "implicit cast single-item pointer" {
|
test "implicit cast single-item pointer" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
|
|
@ -366,6 +375,7 @@ test "comptime evaluating function that takes array by value" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "runtime initialize array elem and then implicit cast to slice" {
|
test "runtime initialize array elem and then implicit cast to slice" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
|
|
@ -376,6 +386,7 @@ test "runtime initialize array elem and then implicit cast to slice" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "array literal as argument to function" {
|
test "array literal as argument to function" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
|
|
@ -403,6 +414,7 @@ test "array literal as argument to function" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "double nested array to const slice cast in array literal" {
|
test "double nested array to const slice cast in array literal" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
@ -527,6 +539,7 @@ test "type deduction for array subscript expression" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "sentinel element count towards the ABI size calculation" {
|
test "sentinel element count towards the ABI size calculation" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
@ -574,6 +587,7 @@ test "zero-sized array with recursive type definition" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "type coercion of anon struct literal to array" {
|
test "type coercion of anon struct literal to array" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
|
|
@ -626,6 +640,7 @@ test "tuple to array handles sentinel" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "array init of container level array variable" {
|
test "array init of container level array variable" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
@ -649,6 +664,8 @@ test "array init of container level array variable" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "runtime initialized sentinel-terminated array literal" {
|
test "runtime initialized sentinel-terminated array literal" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var c: u16 = 300;
|
var c: u16 = 300;
|
||||||
_ = &c;
|
_ = &c;
|
||||||
const f = &[_:0x9999]u16{c};
|
const f = &[_:0x9999]u16{c};
|
||||||
|
|
@ -735,6 +752,8 @@ test "array init with no result pointer sets field result types" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "runtime side-effects in comptime-known array init" {
|
test "runtime side-effects in comptime-known array init" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var side_effects: u4 = 0;
|
var side_effects: u4 = 0;
|
||||||
const init = [4]u4{
|
const init = [4]u4{
|
||||||
blk: {
|
blk: {
|
||||||
|
|
@ -759,6 +778,8 @@ test "runtime side-effects in comptime-known array init" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "slice initialized through reference to anonymous array init provides result types" {
|
test "slice initialized through reference to anonymous array init provides result types" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var my_u32: u32 = 123;
|
var my_u32: u32 = 123;
|
||||||
var my_u64: u64 = 456;
|
var my_u64: u64 = 456;
|
||||||
_ = .{ &my_u32, &my_u64 };
|
_ = .{ &my_u32, &my_u64 };
|
||||||
|
|
@ -772,6 +793,8 @@ test "slice initialized through reference to anonymous array init provides resul
|
||||||
}
|
}
|
||||||
|
|
||||||
test "sentinel-terminated slice initialized through reference to anonymous array init provides result types" {
|
test "sentinel-terminated slice initialized through reference to anonymous array init provides result types" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var my_u32: u32 = 123;
|
var my_u32: u32 = 123;
|
||||||
var my_u64: u64 = 456;
|
var my_u64: u64 = 456;
|
||||||
_ = .{ &my_u32, &my_u64 };
|
_ = .{ &my_u32, &my_u64 };
|
||||||
|
|
@ -785,6 +808,7 @@ test "sentinel-terminated slice initialized through reference to anonymous array
|
||||||
}
|
}
|
||||||
|
|
||||||
test "many-item pointer initialized through reference to anonymous array init provides result types" {
|
test "many-item pointer initialized through reference to anonymous array init provides result types" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var my_u32: u32 = 123;
|
var my_u32: u32 = 123;
|
||||||
|
|
@ -803,6 +827,7 @@ test "many-item pointer initialized through reference to anonymous array init pr
|
||||||
}
|
}
|
||||||
|
|
||||||
test "many-item sentinel-terminated pointer initialized through reference to anonymous array init provides result types" {
|
test "many-item sentinel-terminated pointer initialized through reference to anonymous array init provides result types" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var my_u32: u32 = 123;
|
var my_u32: u32 = 123;
|
||||||
|
|
@ -822,6 +847,8 @@ test "many-item sentinel-terminated pointer initialized through reference to ano
|
||||||
}
|
}
|
||||||
|
|
||||||
test "pointer to array initialized through reference to anonymous array init provides result types" {
|
test "pointer to array initialized through reference to anonymous array init provides result types" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var my_u32: u32 = 123;
|
var my_u32: u32 = 123;
|
||||||
var my_u64: u64 = 456;
|
var my_u64: u64 = 456;
|
||||||
_ = .{ &my_u32, &my_u64 };
|
_ = .{ &my_u32, &my_u64 };
|
||||||
|
|
@ -835,6 +862,8 @@ test "pointer to array initialized through reference to anonymous array init pro
|
||||||
}
|
}
|
||||||
|
|
||||||
test "pointer to sentinel-terminated array initialized through reference to anonymous array init provides result types" {
|
test "pointer to sentinel-terminated array initialized through reference to anonymous array init provides result types" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var my_u32: u32 = 123;
|
var my_u32: u32 = 123;
|
||||||
var my_u64: u64 = 456;
|
var my_u64: u64 = 456;
|
||||||
_ = .{ &my_u32, &my_u64 };
|
_ = .{ &my_u32, &my_u64 };
|
||||||
|
|
@ -848,6 +877,8 @@ test "pointer to sentinel-terminated array initialized through reference to anon
|
||||||
}
|
}
|
||||||
|
|
||||||
test "tuple initialized through reference to anonymous array init provides result types" {
|
test "tuple initialized through reference to anonymous array init provides result types" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const Tuple = struct { u64, *const u32 };
|
const Tuple = struct { u64, *const u32 };
|
||||||
const foo: *const Tuple = &.{
|
const foo: *const Tuple = &.{
|
||||||
@intCast(12345),
|
@intCast(12345),
|
||||||
|
|
@ -873,6 +904,7 @@ test "copied array element doesn't alias source" {
|
||||||
|
|
||||||
test "array initialized with string literal" {
|
test "array initialized with string literal" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
a: u32,
|
a: u32,
|
||||||
|
|
@ -892,6 +924,7 @@ test "array initialized with string literal" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "array initialized with array with sentinel" {
|
test "array initialized with array with sentinel" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
|
|
@ -940,6 +973,7 @@ test "accessing multidimensional global array at comptime" {
|
||||||
if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
const array = [_][]const []const u8{
|
const array = [_][]const []const u8{
|
||||||
|
|
@ -953,6 +987,7 @@ test "accessing multidimensional global array at comptime" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "union that needs padding bytes inside an array" {
|
test "union that needs padding bytes inside an array" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
@ -992,6 +1027,7 @@ test "@splat array" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest(comptime T: type, x: T) !void {
|
fn doTheTest(comptime T: type, x: T) !void {
|
||||||
const arr: [10]T = @splat(x);
|
const arr: [10]T = @splat(x);
|
||||||
|
|
@ -1010,10 +1046,12 @@ test "@splat array" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "@splat array with sentinel" {
|
test "@splat array with sentinel" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest(comptime T: type, x: T, comptime s: T) !void {
|
fn doTheTest(comptime T: type, x: T, comptime s: T) !void {
|
||||||
const arr: [10:s]T = @splat(x);
|
const arr: [10:s]T = @splat(x);
|
||||||
|
|
@ -1033,10 +1071,12 @@ test "@splat array with sentinel" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "@splat zero-length array" {
|
test "@splat zero-length array" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest(comptime T: type, comptime s: T) !void {
|
fn doTheTest(comptime T: type, comptime s: T) !void {
|
||||||
var runtime_undef: T = undefined;
|
var runtime_undef: T = undefined;
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,7 @@ test "cmpxchg with ignored result" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "128-bit cmpxchg" {
|
test "128-bit cmpxchg" {
|
||||||
|
// TODO: this must appear first
|
||||||
if (!supports_128_bit_atomics) return error.SkipZigTest;
|
if (!supports_128_bit_atomics) return error.SkipZigTest;
|
||||||
|
|
||||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
||||||
|
|
@ -284,6 +285,7 @@ fn testAtomicRmwInt(comptime signedness: std.builtin.Signedness, comptime N: usi
|
||||||
}
|
}
|
||||||
|
|
||||||
test "atomicrmw with 128-bit ints" {
|
test "atomicrmw with 128-bit ints" {
|
||||||
|
// TODO: this must appear first
|
||||||
if (!supports_128_bit_atomics) return error.SkipZigTest;
|
if (!supports_128_bit_atomics) return error.SkipZigTest;
|
||||||
|
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ fn testTruncate(x: u32) u8 {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "truncate to non-power-of-two integers" {
|
test "truncate to non-power-of-two integers" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
try testTrunc(u32, u1, 0b10101, 0b1);
|
try testTrunc(u32, u1, 0b10101, 0b1);
|
||||||
|
|
@ -208,12 +209,14 @@ fn first4KeysOfHomeRow() []const u8 {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "return string from function" {
|
test "return string from function" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
try expect(mem.eql(u8, first4KeysOfHomeRow(), "aoeu"));
|
try expect(mem.eql(u8, first4KeysOfHomeRow(), "aoeu"));
|
||||||
}
|
}
|
||||||
|
|
||||||
test "hex escape" {
|
test "hex escape" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
try expect(mem.eql(u8, "\x68\x65\x6c\x6c\x6f", "hello"));
|
try expect(mem.eql(u8, "\x68\x65\x6c\x6c\x6f", "hello"));
|
||||||
|
|
@ -221,6 +224,7 @@ test "hex escape" {
|
||||||
|
|
||||||
test "multiline string" {
|
test "multiline string" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const s1 =
|
const s1 =
|
||||||
\\one
|
\\one
|
||||||
|
|
@ -233,6 +237,7 @@ test "multiline string" {
|
||||||
|
|
||||||
test "multiline string comments at start" {
|
test "multiline string comments at start" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const s1 =
|
const s1 =
|
||||||
//\\one
|
//\\one
|
||||||
|
|
@ -245,6 +250,7 @@ test "multiline string comments at start" {
|
||||||
|
|
||||||
test "multiline string comments at end" {
|
test "multiline string comments at end" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const s1 =
|
const s1 =
|
||||||
\\one
|
\\one
|
||||||
|
|
@ -257,6 +263,7 @@ test "multiline string comments at end" {
|
||||||
|
|
||||||
test "multiline string comments in middle" {
|
test "multiline string comments in middle" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const s1 =
|
const s1 =
|
||||||
\\one
|
\\one
|
||||||
|
|
@ -269,6 +276,7 @@ test "multiline string comments in middle" {
|
||||||
|
|
||||||
test "multiline string comments at multiple places" {
|
test "multiline string comments at multiple places" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const s1 =
|
const s1 =
|
||||||
\\one
|
\\one
|
||||||
|
|
@ -282,11 +290,14 @@ test "multiline string comments at multiple places" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "string concatenation simple" {
|
test "string concatenation simple" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try expect(mem.eql(u8, "OK" ++ " IT " ++ "WORKED", "OK IT WORKED"));
|
try expect(mem.eql(u8, "OK" ++ " IT " ++ "WORKED", "OK IT WORKED"));
|
||||||
}
|
}
|
||||||
|
|
||||||
test "array mult operator" {
|
test "array mult operator" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try expect(mem.eql(u8, "ab" ** 5, "ababababab"));
|
try expect(mem.eql(u8, "ab" ** 5, "ababababab"));
|
||||||
}
|
}
|
||||||
|
|
@ -308,6 +319,8 @@ const global_a: i32 = 1234;
|
||||||
const global_b: *const i32 = &global_a;
|
const global_b: *const i32 = &global_a;
|
||||||
const global_c: *const f32 = @as(*const f32, @ptrCast(global_b));
|
const global_c: *const f32 = @as(*const f32, @ptrCast(global_b));
|
||||||
test "compile time global reinterpret" {
|
test "compile time global reinterpret" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const d = @as(*const i32, @ptrCast(global_c));
|
const d = @as(*const i32, @ptrCast(global_c));
|
||||||
try expect(d.* == 1234);
|
try expect(d.* == 1234);
|
||||||
}
|
}
|
||||||
|
|
@ -435,6 +448,8 @@ fn f2(x: bool) []const u8 {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "variable is allowed to be a pointer to an opaque type" {
|
test "variable is allowed to be a pointer to an opaque type" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var x: i32 = 1234;
|
var x: i32 = 1234;
|
||||||
_ = hereIsAnOpaqueType(@as(*OpaqueA, @ptrCast(&x)));
|
_ = hereIsAnOpaqueType(@as(*OpaqueA, @ptrCast(&x)));
|
||||||
}
|
}
|
||||||
|
|
@ -457,6 +472,8 @@ fn testTakeAddressOfParameter(f: f32) !void {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "pointer to void return type" {
|
test "pointer to void return type" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testPointerToVoidReturnType();
|
try testPointerToVoidReturnType();
|
||||||
}
|
}
|
||||||
fn testPointerToVoidReturnType() anyerror!void {
|
fn testPointerToVoidReturnType() anyerror!void {
|
||||||
|
|
@ -472,6 +489,7 @@ test "array 2D const double ptr" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const rect_2d_vertexes = [_][1]f32{
|
const rect_2d_vertexes = [_][1]f32{
|
||||||
[_]f32{1.0},
|
[_]f32{1.0},
|
||||||
|
|
@ -484,6 +502,7 @@ test "array 2D const double ptr with offset" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const rect_2d_vertexes = [_][2]f32{
|
const rect_2d_vertexes = [_][2]f32{
|
||||||
[_]f32{ 3.0, 4.239 },
|
[_]f32{ 3.0, 4.239 },
|
||||||
|
|
@ -496,6 +515,7 @@ test "array 3D const double ptr with offset" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const rect_3d_vertexes = [_][2][2]f32{
|
const rect_3d_vertexes = [_][2][2]f32{
|
||||||
[_][2]f32{
|
[_][2]f32{
|
||||||
|
|
@ -551,6 +571,8 @@ fn testStructInFn() !void {
|
||||||
|
|
||||||
test "fn call returning scalar optional in equality expression" {
|
test "fn call returning scalar optional in equality expression" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try expect(getNull() == null);
|
try expect(getNull() == null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -561,6 +583,7 @@ fn getNull() ?*i32 {
|
||||||
test "global variable assignment with optional unwrapping with var initialized to undefined" {
|
test "global variable assignment with optional unwrapping with var initialized to undefined" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
var data: i32 = 1234;
|
var data: i32 = 1234;
|
||||||
|
|
@ -676,6 +699,7 @@ test "self reference through fn ptr field" {
|
||||||
|
|
||||||
test "global variable initialized to global variable array element" {
|
test "global variable initialized to global variable array element" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try expect(global_ptr == &gdt[0]);
|
try expect(global_ptr == &gdt[0]);
|
||||||
}
|
}
|
||||||
|
|
@ -708,6 +732,7 @@ test "global constant is loaded with a runtime-known index" {
|
||||||
|
|
||||||
test "multiline string literal is null terminated" {
|
test "multiline string literal is null terminated" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const s1 =
|
const s1 =
|
||||||
\\one
|
\\one
|
||||||
|
|
@ -722,6 +747,7 @@ test "string escapes" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try expectEqualStrings("\"", "\x22");
|
try expectEqualStrings("\"", "\x22");
|
||||||
try expectEqualStrings("\'", "\x27");
|
try expectEqualStrings("\'", "\x27");
|
||||||
|
|
@ -739,6 +765,8 @@ test "explicit cast optional pointers" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "pointer comparison" {
|
test "pointer comparison" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const a = @as([]const u8, "a");
|
const a = @as([]const u8, "a");
|
||||||
const b = &a;
|
const b = &a;
|
||||||
try expect(ptrEql(b, b));
|
try expect(ptrEql(b, b));
|
||||||
|
|
@ -789,6 +817,7 @@ fn maybe(x: bool) anyerror!?u32 {
|
||||||
test "auto created variables have correct alignment" {
|
test "auto created variables have correct alignment" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn foo(str: [*]const u8) u32 {
|
fn foo(str: [*]const u8) u32 {
|
||||||
|
|
@ -1152,6 +1181,8 @@ test "orelse coercion as function argument" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "runtime-known globals initialized with undefined" {
|
test "runtime-known globals initialized with undefined" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
var array: [10]u32 = [_]u32{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
|
var array: [10]u32 = [_]u32{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
|
||||||
var vp: [*]u32 = undefined;
|
var vp: [*]u32 = undefined;
|
||||||
|
|
@ -1244,6 +1275,8 @@ fn testUnsignedCmp(comptime T: type) !void {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "integer compare <= 64 bits" {
|
test "integer compare <= 64 bits" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
inline for (.{ u8, u16, u32, u64, usize, u10, u20, u30, u60 }) |T| {
|
inline for (.{ u8, u16, u32, u64, usize, u10, u20, u30, u60 }) |T| {
|
||||||
try testUnsignedCmp(T);
|
try testUnsignedCmp(T);
|
||||||
try comptime testUnsignedCmp(T);
|
try comptime testUnsignedCmp(T);
|
||||||
|
|
|
||||||
|
|
@ -23,8 +23,8 @@ test "@bitCast iX -> uX (8, 16, 128)" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const bit_values = [_]usize{ 8, 16, 128 };
|
const bit_values = [_]usize{ 8, 16, 128 };
|
||||||
|
|
||||||
|
|
@ -153,6 +153,8 @@ test "bitcast literal [4]u8 param to u32" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "bitcast generates a temporary value" {
|
test "bitcast generates a temporary value" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var y: u16 = 0x55AA;
|
var y: u16 = 0x55AA;
|
||||||
_ = &y;
|
_ = &y;
|
||||||
const x: u16 = @bitCast(@as([2]u8, @bitCast(y)));
|
const x: u16 = @bitCast(@as([2]u8, @bitCast(y)));
|
||||||
|
|
@ -190,6 +192,7 @@ test "@bitCast packed structs at runtime and comptime" {
|
||||||
test "@bitCast extern structs at runtime and comptime" {
|
test "@bitCast extern structs at runtime and comptime" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const Full = extern struct {
|
const Full = extern struct {
|
||||||
number: u16,
|
number: u16,
|
||||||
|
|
@ -383,7 +386,6 @@ test "comptime bitcast with fields following f80" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
|
|
||||||
const FloatT = extern struct { f: f80, x: u128 align(16) };
|
const FloatT = extern struct { f: f80, x: u128 align(16) };
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ test "bool literals" {
|
||||||
|
|
||||||
test "cast bool to int" {
|
test "cast bool to int" {
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const t = true;
|
const t = true;
|
||||||
const f = false;
|
const f = false;
|
||||||
|
|
|
||||||
|
|
@ -344,6 +344,7 @@ test "inline call preserves tail call" {
|
||||||
test "inline call doesn't re-evaluate non generic struct" {
|
test "inline call doesn't re-evaluate non generic struct" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn foo(f: struct { a: u8, b: u8 }) !void {
|
fn foo(f: struct { a: u8, b: u8 }) !void {
|
||||||
|
|
@ -497,6 +498,8 @@ test "argument to generic function has correct result type" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "call inline fn through pointer" {
|
test "call inline fn through pointer" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
inline fn foo(x: u8) !void {
|
inline fn foo(x: u8) !void {
|
||||||
try expect(x == 123);
|
try expect(x == 123);
|
||||||
|
|
@ -644,6 +647,8 @@ test "function call with cast to anyopaque pointer" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const Foo = struct {
|
const Foo = struct {
|
||||||
y: u8,
|
y: u8,
|
||||||
var foo: @This() = undefined;
|
var foo: @This() = undefined;
|
||||||
|
|
|
||||||
|
|
@ -161,6 +161,7 @@ test "@intFromFloat" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testIntFromFloats();
|
try testIntFromFloats();
|
||||||
try comptime testIntFromFloats();
|
try comptime testIntFromFloats();
|
||||||
|
|
@ -183,6 +184,7 @@ fn expectIntFromFloat(comptime F: type, f: F, comptime I: type, i: I) !void {
|
||||||
test "implicitly cast indirect pointer to maybe-indirect pointer" {
|
test "implicitly cast indirect pointer to maybe-indirect pointer" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
const Self = @This();
|
const Self = @This();
|
||||||
|
|
@ -263,6 +265,7 @@ fn MakeType(comptime T: type) type {
|
||||||
test "implicit cast from *[N]T to [*c]T" {
|
test "implicit cast from *[N]T to [*c]T" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var x: [4]u16 = [4]u16{ 0, 1, 2, 3 };
|
var x: [4]u16 = [4]u16{ 0, 1, 2, 3 };
|
||||||
var y: [*c]u16 = &x;
|
var y: [*c]u16 = &x;
|
||||||
|
|
@ -325,6 +328,7 @@ test "*const ?[*]const T to [*c]const [*c]const T" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var array = [_]u8{ 'o', 'k' };
|
var array = [_]u8{ 'o', 'k' };
|
||||||
const opt_array_ptr: ?[*]const u8 = &array;
|
const opt_array_ptr: ?[*]const u8 = &array;
|
||||||
|
|
@ -402,6 +406,7 @@ test "peer type unsigned int to signed" {
|
||||||
test "expected [*c]const u8, found [*:0]const u8" {
|
test "expected [*c]const u8, found [*:0]const u8" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a: [*:0]const u8 = "hello";
|
var a: [*:0]const u8 = "hello";
|
||||||
_ = &a;
|
_ = &a;
|
||||||
|
|
@ -430,6 +435,7 @@ test "peer resolve array and const slice" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testPeerResolveArrayConstSlice(true);
|
try testPeerResolveArrayConstSlice(true);
|
||||||
try comptime testPeerResolveArrayConstSlice(true);
|
try comptime testPeerResolveArrayConstSlice(true);
|
||||||
|
|
@ -487,6 +493,7 @@ test "peer type resolution: [0]u8, []const u8, and anyerror![]u8" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() anyerror!void {
|
fn doTheTest() anyerror!void {
|
||||||
|
|
@ -518,6 +525,7 @@ fn peerTypeEmptyArrayAndSliceAndError(a: bool, slice: []u8) anyerror![]u8 {
|
||||||
test "implicit cast from *const [N]T to []const T" {
|
test "implicit cast from *const [N]T to []const T" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testCastConstArrayRefToConstSlice();
|
try testCastConstArrayRefToConstSlice();
|
||||||
try comptime testCastConstArrayRefToConstSlice();
|
try comptime testCastConstArrayRefToConstSlice();
|
||||||
|
|
@ -543,6 +551,7 @@ fn testCastConstArrayRefToConstSlice() !void {
|
||||||
test "peer type resolution: error and [N]T" {
|
test "peer type resolution: error and [N]T" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try expect(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));
|
try expect(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));
|
||||||
comptime assert(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));
|
comptime assert(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));
|
||||||
|
|
@ -567,6 +576,7 @@ fn testPeerErrorAndArray2(x: u8) anyerror![]const u8 {
|
||||||
test "single-item pointer of array to slice to unknown length pointer" {
|
test "single-item pointer of array to slice to unknown length pointer" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testCastPtrOfArrayToSliceAndPtr();
|
try testCastPtrOfArrayToSliceAndPtr();
|
||||||
try comptime testCastPtrOfArrayToSliceAndPtr();
|
try comptime testCastPtrOfArrayToSliceAndPtr();
|
||||||
|
|
@ -596,6 +606,7 @@ fn testCastPtrOfArrayToSliceAndPtr() !void {
|
||||||
test "cast *[1][*]const u8 to [*]const ?[*]const u8" {
|
test "cast *[1][*]const u8 to [*]const ?[*]const u8" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const window_name = [1][*]const u8{"window name"};
|
const window_name = [1][*]const u8{"window name"};
|
||||||
const x: [*]const ?[*]const u8 = &window_name;
|
const x: [*]const ?[*]const u8 = &window_name;
|
||||||
|
|
@ -609,6 +620,7 @@ test "@intCast on vector" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -696,6 +708,7 @@ test "peer type resolution: error set supersets" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const a: error{ One, Two } = undefined;
|
const a: error{ One, Two } = undefined;
|
||||||
const b: error{One} = undefined;
|
const b: error{One} = undefined;
|
||||||
|
|
@ -725,6 +738,7 @@ test "peer type resolution: disjoint error sets" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const a: error{ One, Two } = undefined;
|
const a: error{ One, Two } = undefined;
|
||||||
const b: error{Three} = undefined;
|
const b: error{Three} = undefined;
|
||||||
|
|
@ -788,6 +802,7 @@ test "peer type resolution: error union after non-error" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const a: u32 = undefined;
|
const a: u32 = undefined;
|
||||||
const b: error{ One, Two }!u32 = undefined;
|
const b: error{ One, Two }!u32 = undefined;
|
||||||
|
|
@ -821,6 +836,7 @@ test "peer cast *[0]T to E![]const T" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var buffer: [5]u8 = "abcde".*;
|
var buffer: [5]u8 = "abcde".*;
|
||||||
const buf: anyerror![]const u8 = buffer[0..];
|
const buf: anyerror![]const u8 = buffer[0..];
|
||||||
|
|
@ -836,6 +852,7 @@ test "peer cast *[0]T to []const T" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var buffer: [5]u8 = "abcde".*;
|
var buffer: [5]u8 = "abcde".*;
|
||||||
const buf: []const u8 = buffer[0..];
|
const buf: []const u8 = buffer[0..];
|
||||||
|
|
@ -859,6 +876,7 @@ test "peer resolution of string literals" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
const E = enum { a, b, c, d };
|
const E = enum { a, b, c, d };
|
||||||
|
|
@ -880,6 +898,7 @@ test "peer resolution of string literals" {
|
||||||
test "peer cast [:x]T to []T" {
|
test "peer cast [:x]T to []T" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -896,6 +915,7 @@ test "peer cast [:x]T to []T" {
|
||||||
test "peer cast [N:x]T to [N]T" {
|
test "peer cast [N:x]T to [N]T" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -912,6 +932,7 @@ test "peer cast [N:x]T to [N]T" {
|
||||||
test "peer cast *[N:x]T to *[N]T" {
|
test "peer cast *[N:x]T to *[N]T" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -928,6 +949,7 @@ test "peer cast [*:x]T to [*]T" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -948,6 +970,7 @@ test "peer cast [:x]T to [*:x]T" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -968,6 +991,7 @@ test "peer cast [:x]T to [*:x]T" {
|
||||||
test "peer type resolution implicit cast to return type" {
|
test "peer type resolution implicit cast to return type" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -988,6 +1012,7 @@ test "peer type resolution implicit cast to return type" {
|
||||||
test "peer type resolution implicit cast to variable type" {
|
test "peer type resolution implicit cast to variable type" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -1013,6 +1038,7 @@ test "variable initialization uses result locations properly with regards to the
|
||||||
test "cast between C pointer with different but compatible types" {
|
test "cast between C pointer with different but compatible types" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn foo(arg: [*]c_ushort) u16 {
|
fn foo(arg: [*]c_ushort) u16 {
|
||||||
|
|
@ -1030,6 +1056,7 @@ test "cast between C pointer with different but compatible types" {
|
||||||
test "peer type resolve string lit with sentinel-terminated mutable slice" {
|
test "peer type resolve string lit with sentinel-terminated mutable slice" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var array: [4:0]u8 = undefined;
|
var array: [4:0]u8 = undefined;
|
||||||
array[4] = 0; // TODO remove this when #4372 is solved
|
array[4] = 0; // TODO remove this when #4372 is solved
|
||||||
|
|
@ -1096,6 +1123,7 @@ test "implicit cast from [*]T to ?*anyopaque" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a = [_]u8{ 3, 2, 1 };
|
var a = [_]u8{ 3, 2, 1 };
|
||||||
var runtime_zero: usize = 0;
|
var runtime_zero: usize = 0;
|
||||||
|
|
@ -1112,6 +1140,8 @@ fn incrementVoidPtrArray(array: ?*anyopaque, len: usize) void {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "compile time int to ptr of function" {
|
test "compile time int to ptr of function" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try foobar(FUNCTION_CONSTANT);
|
try foobar(FUNCTION_CONSTANT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1158,6 +1188,7 @@ test "implicit ptr to *anyopaque" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a: u32 = 1;
|
var a: u32 = 1;
|
||||||
const ptr: *align(@alignOf(u32)) anyopaque = &a;
|
const ptr: *align(@alignOf(u32)) anyopaque = &a;
|
||||||
|
|
@ -1171,6 +1202,7 @@ test "implicit ptr to *anyopaque" {
|
||||||
test "return null from fn () anyerror!?&T" {
|
test "return null from fn () anyerror!?&T" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const a = returnNullFromOptionalTypeErrorRef();
|
const a = returnNullFromOptionalTypeErrorRef();
|
||||||
const b = returnNullLitFromOptionalTypeErrorRef();
|
const b = returnNullLitFromOptionalTypeErrorRef();
|
||||||
|
|
@ -1188,6 +1220,7 @@ test "peer type resolution: [0]u8 and []const u8" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try expect(peerTypeEmptyArrayAndSlice(true, "hi").len == 0);
|
try expect(peerTypeEmptyArrayAndSlice(true, "hi").len == 0);
|
||||||
try expect(peerTypeEmptyArrayAndSlice(false, "hi").len == 1);
|
try expect(peerTypeEmptyArrayAndSlice(false, "hi").len == 1);
|
||||||
|
|
@ -1208,6 +1241,7 @@ test "implicitly cast from [N]T to ?[]const T" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try expect(mem.eql(u8, castToOptionalSlice().?, "hi"));
|
try expect(mem.eql(u8, castToOptionalSlice().?, "hi"));
|
||||||
comptime assert(mem.eql(u8, castToOptionalSlice().?, "hi"));
|
comptime assert(mem.eql(u8, castToOptionalSlice().?, "hi"));
|
||||||
|
|
@ -1245,6 +1279,7 @@ test "implicit cast from *[N]T to ?[*]T" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var x: ?[*]u16 = null;
|
var x: ?[*]u16 = null;
|
||||||
var y: [4]u16 = [4]u16{ 0, 1, 2, 3 };
|
var y: [4]u16 = [4]u16{ 0, 1, 2, 3 };
|
||||||
|
|
@ -1260,6 +1295,7 @@ test "implicit cast from *T to ?*anyopaque" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a: u8 = 1;
|
var a: u8 = 1;
|
||||||
incrementVoidPtrValue(&a);
|
incrementVoidPtrValue(&a);
|
||||||
|
|
@ -1281,10 +1317,14 @@ test "implicit cast *[0]T to E![]const u8" {
|
||||||
|
|
||||||
var global_array: [4]u8 = undefined;
|
var global_array: [4]u8 = undefined;
|
||||||
test "cast from array reference to fn: comptime fn ptr" {
|
test "cast from array reference to fn: comptime fn ptr" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const f = @as(*align(1) const fn () callconv(.c) void, @ptrCast(&global_array));
|
const f = @as(*align(1) const fn () callconv(.c) void, @ptrCast(&global_array));
|
||||||
try expect(@intFromPtr(f) == @intFromPtr(&global_array));
|
try expect(@intFromPtr(f) == @intFromPtr(&global_array));
|
||||||
}
|
}
|
||||||
test "cast from array reference to fn: runtime fn ptr" {
|
test "cast from array reference to fn: runtime fn ptr" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var f = @as(*align(1) const fn () callconv(.c) void, @ptrCast(&global_array));
|
var f = @as(*align(1) const fn () callconv(.c) void, @ptrCast(&global_array));
|
||||||
_ = &f;
|
_ = &f;
|
||||||
try expect(@intFromPtr(f) == @intFromPtr(&global_array));
|
try expect(@intFromPtr(f) == @intFromPtr(&global_array));
|
||||||
|
|
@ -1294,6 +1334,7 @@ test "*const [N]null u8 to ?[]const u8" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -1330,6 +1371,7 @@ test "assignment to optional pointer result loc" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var foo: struct { ptr: ?*anyopaque } = .{ .ptr = &global_struct };
|
var foo: struct { ptr: ?*anyopaque } = .{ .ptr = &global_struct };
|
||||||
_ = &foo;
|
_ = &foo;
|
||||||
|
|
@ -1347,6 +1389,7 @@ test "cast between *[N]void and []void" {
|
||||||
test "peer resolve arrays of different size to const slice" {
|
test "peer resolve arrays of different size to const slice" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try expect(mem.eql(u8, boolToStr(true), "true"));
|
try expect(mem.eql(u8, boolToStr(true), "true"));
|
||||||
try expect(mem.eql(u8, boolToStr(false), "false"));
|
try expect(mem.eql(u8, boolToStr(false), "false"));
|
||||||
|
|
@ -1404,6 +1447,7 @@ test "peer type resolution: unreachable, null, slice" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest(num: usize, word: []const u8) !void {
|
fn doTheTest(num: usize, word: []const u8) !void {
|
||||||
|
|
@ -1444,6 +1488,7 @@ test "cast compatible optional types" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a: ?[:0]const u8 = null;
|
var a: ?[:0]const u8 = null;
|
||||||
_ = &a;
|
_ = &a;
|
||||||
|
|
@ -1530,16 +1575,16 @@ test "cast typed undefined to int" {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
test "implicit cast from [:0]T to [*c]T" {
|
// test "implicit cast from [:0]T to [*c]T" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
// if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
var a: [:0]const u8 = "foo";
|
// var a: [:0]const u8 = "foo";
|
||||||
_ = &a;
|
// _ = &a;
|
||||||
const b: [*c]const u8 = a;
|
// const b: [*c]const u8 = a;
|
||||||
const c = std.mem.span(b);
|
// const c = std.mem.span(b);
|
||||||
try expect(c.len == a.len);
|
// try expect(c.len == a.len);
|
||||||
try expect(c.ptr == a.ptr);
|
// try expect(c.ptr == a.ptr);
|
||||||
}
|
// }
|
||||||
|
|
||||||
test "bitcast packed struct with u0" {
|
test "bitcast packed struct with u0" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
|
|
@ -1555,6 +1600,7 @@ test "bitcast packed struct with u0" {
|
||||||
|
|
||||||
test "optional pointer coerced to optional allowzero pointer" {
|
test "optional pointer coerced to optional allowzero pointer" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var p: ?*u32 = undefined;
|
var p: ?*u32 = undefined;
|
||||||
var q: ?*allowzero u32 = undefined;
|
var q: ?*allowzero u32 = undefined;
|
||||||
|
|
@ -1571,6 +1617,8 @@ test "optional slice coerced to allowzero many pointer" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "optional slice passed as parameter coerced to allowzero many pointer" {
|
test "optional slice passed as parameter coerced to allowzero many pointer" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const ns = struct {
|
const ns = struct {
|
||||||
const Color = struct {
|
const Color = struct {
|
||||||
r: u8,
|
r: u8,
|
||||||
|
|
@ -1590,6 +1638,8 @@ test "optional slice passed as parameter coerced to allowzero many pointer" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "single item pointer to pointer to array to slice" {
|
test "single item pointer to pointer to array to slice" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var x: i32 = 1234;
|
var x: i32 = 1234;
|
||||||
try expect(@as([]const i32, @as(*[1]i32, &x))[0] == 1234);
|
try expect(@as([]const i32, @as(*[1]i32, &x))[0] == 1234);
|
||||||
const z1 = @as([]const i32, @as(*[1]i32, &x));
|
const z1 = @as([]const i32, @as(*[1]i32, &x));
|
||||||
|
|
@ -1598,6 +1648,7 @@ test "single item pointer to pointer to array to slice" {
|
||||||
|
|
||||||
test "peer type resolution forms error union" {
|
test "peer type resolution forms error union" {
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var foo: i32 = 123;
|
var foo: i32 = 123;
|
||||||
_ = &foo;
|
_ = &foo;
|
||||||
|
|
@ -1632,6 +1683,8 @@ test "@volatileCast without a result location" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "coercion from single-item pointer to @as to slice" {
|
test "coercion from single-item pointer to @as to slice" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var x: u32 = 1;
|
var x: u32 = 1;
|
||||||
|
|
||||||
// Why the following line gets a compile error?
|
// Why the following line gets a compile error?
|
||||||
|
|
@ -1644,6 +1697,7 @@ test "peer type resolution: const sentinel slice and mutable non-sentinel slice"
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest(comptime T: type, comptime s: T) !void {
|
fn doTheTest(comptime T: type, comptime s: T) !void {
|
||||||
|
|
@ -1696,6 +1750,7 @@ test "peer type resolution: same array type with sentinel" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a: [2:0]u32 = .{ 0, 1 };
|
var a: [2:0]u32 = .{ 0, 1 };
|
||||||
var b: [2:0]u32 = .{ 2, 3 };
|
var b: [2:0]u32 = .{ 2, 3 };
|
||||||
|
|
@ -1718,6 +1773,7 @@ test "peer type resolution: array with sentinel and array without sentinel" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a: [2:0]u32 = .{ 0, 1 };
|
var a: [2:0]u32 = .{ 0, 1 };
|
||||||
var b: [2]u32 = .{ 2, 3 };
|
var b: [2]u32 = .{ 2, 3 };
|
||||||
|
|
@ -1740,6 +1796,7 @@ test "peer type resolution: array and vector with same child type" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var arr: [2]u32 = .{ 0, 1 };
|
var arr: [2]u32 = .{ 0, 1 };
|
||||||
var vec: @Vector(2, u32) = .{ 2, 3 };
|
var vec: @Vector(2, u32) = .{ 2, 3 };
|
||||||
|
|
@ -1786,6 +1843,7 @@ test "peer type resolution: error union and optional of same type" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const E = error{Foo};
|
const E = error{Foo};
|
||||||
var a: E!*u8 = error.Foo;
|
var a: E!*u8 = error.Foo;
|
||||||
|
|
@ -1809,6 +1867,7 @@ test "peer type resolution: C pointer and @TypeOf(null)" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a: [*c]c_int = 0x1000;
|
var a: [*c]c_int = 0x1000;
|
||||||
_ = &a;
|
_ = &a;
|
||||||
|
|
@ -1831,6 +1890,7 @@ test "peer type resolution: three-way resolution combines error set and optional
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const E = error{Foo};
|
const E = error{Foo};
|
||||||
var a: E = error.Foo;
|
var a: E = error.Foo;
|
||||||
|
|
@ -1919,6 +1979,7 @@ test "peer type resolution: array and tuple" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var arr: [3]i32 = .{ 1, 2, 3 };
|
var arr: [3]i32 = .{ 1, 2, 3 };
|
||||||
_ = &arr;
|
_ = &arr;
|
||||||
|
|
@ -1967,6 +2028,7 @@ test "peer type resolution: vector and array and tuple" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var vec: @Vector(2, i8) = .{ 10, 20 };
|
var vec: @Vector(2, i8) = .{ 10, 20 };
|
||||||
var arr: [2]i8 = .{ 30, 40 };
|
var arr: [2]i8 = .{ 30, 40 };
|
||||||
|
|
@ -2009,6 +2071,7 @@ test "peer type resolution: empty tuple pointer and slice" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a: [:0]const u8 = "Hello";
|
var a: [:0]const u8 = "Hello";
|
||||||
var b = &.{};
|
var b = &.{};
|
||||||
|
|
@ -2030,6 +2093,7 @@ test "peer type resolution: tuple pointer and slice" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a: [:0]const u8 = "Hello";
|
var a: [:0]const u8 = "Hello";
|
||||||
var b = &.{ @as(u8, 'x'), @as(u8, 'y'), @as(u8, 'z') };
|
var b = &.{ @as(u8, 'x'), @as(u8, 'y'), @as(u8, 'z') };
|
||||||
|
|
@ -2074,7 +2138,7 @@ test "peer type resolution: many compatible pointers" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var buf = "foo-3".*;
|
var buf = "foo-3".*;
|
||||||
|
|
||||||
|
|
@ -2173,6 +2237,7 @@ test "peer type resolution: C pointer and many pointer" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var buf = "hello".*;
|
var buf = "hello".*;
|
||||||
|
|
||||||
|
|
@ -2196,6 +2261,7 @@ test "peer type resolution: pointer attributes are combined correctly" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var buf_a align(4) = "foo".*;
|
var buf_a align(4) = "foo".*;
|
||||||
var buf_b align(4) = "bar".*;
|
var buf_b align(4) = "bar".*;
|
||||||
|
|
@ -2277,6 +2343,7 @@ test "peer type resolution: arrays of compatible types" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var e0: u8 = 3;
|
var e0: u8 = 3;
|
||||||
var e1: u8 = 2;
|
var e1: u8 = 2;
|
||||||
|
|
@ -2294,6 +2361,7 @@ test "cast builtins can wrap result in optional" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
const MyEnum = enum(u32) { _ };
|
const MyEnum = enum(u32) { _ };
|
||||||
|
|
@ -2369,6 +2437,7 @@ test "cast builtins can wrap result in error union and optional" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
const MyEnum = enum(u32) { _ };
|
const MyEnum = enum(u32) { _ };
|
||||||
|
|
@ -2452,6 +2521,7 @@ test "@ptrFromInt on vector" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -2476,6 +2546,7 @@ test "@intFromPtr on vector" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -2597,6 +2668,7 @@ test "result information is preserved through many nested structures" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -2624,6 +2696,7 @@ test "@intCast vector of signed integer" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var x: @Vector(4, i32) = .{ 1, 2, 3, 4 };
|
var x: @Vector(4, i32) = .{ 1, 2, 3, 4 };
|
||||||
_ = &x;
|
_ = &x;
|
||||||
|
|
@ -2654,6 +2727,8 @@ test "bitcast vector" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "peer type resolution: slice of sentinel-terminated array" {
|
test "peer type resolution: slice of sentinel-terminated array" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var f: bool = undefined;
|
var f: bool = undefined;
|
||||||
f = false;
|
f = false;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ test "coerce i8 to i32 and @intCast back" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var x: i8 = -5;
|
var x: i8 = -5;
|
||||||
var y: i32 = -5;
|
var y: i32 = -5;
|
||||||
|
|
@ -35,6 +36,8 @@ test "coerce i8 to i32 and @intCast back" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "coerce non byte-sized integers accross 32bits boundary" {
|
test "coerce non byte-sized integers accross 32bits boundary" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
{
|
{
|
||||||
var v: u21 = 6417;
|
var v: u21 = 6417;
|
||||||
_ = &v;
|
_ = &v;
|
||||||
|
|
@ -179,8 +182,8 @@ test "load non byte-sized optional value" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "load non byte-sized value in struct" {
|
test "load non byte-sized value in struct" {
|
||||||
if (builtin.cpu.arch.endian() != .little) return error.SkipZigTest; // packed struct TODO
|
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
if (builtin.cpu.arch.endian() != .little) return error.SkipZigTest; // packed struct TODO
|
||||||
|
|
||||||
// note: this bug is triggered by the == operator, expectEqual will hide it
|
// note: this bug is triggered by the == operator, expectEqual will hide it
|
||||||
// using ptrCast not to depend on unitialised memory state
|
// using ptrCast not to depend on unitialised memory state
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ test "const slice child" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const strs = [_][*]const u8{ "one", "two", "three" };
|
const strs = [_][*]const u8{ "one", "two", "three" };
|
||||||
argv = &strs;
|
argv = &strs;
|
||||||
|
|
|
||||||
|
|
@ -33,10 +33,11 @@ test "decl literal with pointer" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "call decl literal with optional" {
|
test "call decl literal with optional" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64 or
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
|
||||||
builtin.zig_backend == .stage2_arm or
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
builtin.zig_backend == .stage2_aarch64 or
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
x: u32,
|
x: u32,
|
||||||
fn init() ?@This() {
|
fn init() ?@This() {
|
||||||
|
|
|
||||||
|
|
@ -160,6 +160,7 @@ test "reference to errdefer payload" {
|
||||||
test "simple else prong doesn't emit an error for unreachable else prong" {
|
test "simple else prong doesn't emit an error for unreachable else prong" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn foo() error{Foo}!void {
|
fn foo() error{Foo}!void {
|
||||||
|
|
|
||||||
|
|
@ -94,6 +94,8 @@ test "destructure from labeled block" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "destructure tuple value" {
|
test "destructure tuple value" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const tup: struct { f32, u32, i64 } = .{ 10.0, 20, 30 };
|
const tup: struct { f32, u32, i64 } = .{ 10.0, 20, 30 };
|
||||||
const x, const y, const z = tup;
|
const x, const y, const z = tup;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -945,6 +945,7 @@ test "constant enum initialization with differing sizes" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try test3_1(test3_foo);
|
try test3_1(test3_foo);
|
||||||
try test3_2(test3_bar);
|
try test3_2(test3_bar);
|
||||||
|
|
@ -1047,6 +1048,7 @@ test "tag name with assigned enum values" {
|
||||||
test "@tagName on enum literals" {
|
test "@tagName on enum literals" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));
|
try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));
|
||||||
comptime assert(mem.eql(u8, @tagName(.FooBar), "FooBar"));
|
comptime assert(mem.eql(u8, @tagName(.FooBar), "FooBar"));
|
||||||
|
|
@ -1236,6 +1238,8 @@ test "enum tag from a local variable" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "auto-numbered enum with signed tag type" {
|
test "auto-numbered enum with signed tag type" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const E = enum(i32) { a, b };
|
const E = enum(i32) { a, b };
|
||||||
|
|
||||||
try std.testing.expectEqual(@as(i32, 0), @intFromEnum(E.a));
|
try std.testing.expectEqual(@as(i32, 0), @intFromEnum(E.a));
|
||||||
|
|
|
||||||
|
|
@ -124,6 +124,7 @@ test "debug info for optional error set" {
|
||||||
|
|
||||||
test "implicit cast to optional to error union to return result loc" {
|
test "implicit cast to optional to error union to return result loc" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn entry() !void {
|
fn entry() !void {
|
||||||
|
|
@ -150,6 +151,7 @@ test "fn returning empty error set can be passed as fn returning any error" {
|
||||||
|
|
||||||
test "fn returning empty error set can be passed as fn returning any error - pointer" {
|
test "fn returning empty error set can be passed as fn returning any error - pointer" {
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
entryPtr();
|
entryPtr();
|
||||||
comptime entryPtr();
|
comptime entryPtr();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -143,6 +143,7 @@ test "a type constructed in a global expression" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var l: List = undefined;
|
var l: List = undefined;
|
||||||
l.array[0] = 10;
|
l.array[0] = 10;
|
||||||
|
|
@ -445,6 +446,7 @@ test "binary math operator in partially inlined function" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var s: [4]u32 = undefined;
|
var s: [4]u32 = undefined;
|
||||||
var b: [16]u8 = undefined;
|
var b: [16]u8 = undefined;
|
||||||
|
|
@ -503,6 +505,7 @@ test "comptime shlWithOverflow" {
|
||||||
test "const ptr to variable data changes at runtime" {
|
test "const ptr to variable data changes at runtime" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try expect(foo_ref.name[0] == 'a');
|
try expect(foo_ref.name[0] == 'a');
|
||||||
foo_ref.name = "b";
|
foo_ref.name = "b";
|
||||||
|
|
@ -536,6 +539,7 @@ test "runtime 128 bit integer division" {
|
||||||
test "@tagName of @typeInfo" {
|
test "@tagName of @typeInfo" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const str = @tagName(@typeInfo(u8));
|
const str = @tagName(@typeInfo(u8));
|
||||||
try expect(std.mem.eql(u8, str, "int"));
|
try expect(std.mem.eql(u8, str, "int"));
|
||||||
|
|
@ -613,6 +617,7 @@ const hi1 = "hi";
|
||||||
const hi2 = hi1;
|
const hi2 = hi1;
|
||||||
test "const global shares pointer with other same one" {
|
test "const global shares pointer with other same one" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try assertEqualPtrs(&hi1[0], &hi2[0]);
|
try assertEqualPtrs(&hi1[0], &hi2[0]);
|
||||||
comptime assert(&hi1[0] == &hi2[0]);
|
comptime assert(&hi1[0] == &hi2[0]);
|
||||||
|
|
@ -739,6 +744,7 @@ test "array concatenation of function calls" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a = oneItem(3) ++ oneItem(4);
|
var a = oneItem(3) ++ oneItem(4);
|
||||||
try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 4 }));
|
try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 4 }));
|
||||||
|
|
@ -748,6 +754,7 @@ test "array multiplication of function calls" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a = oneItem(3) ** scalar(2);
|
var a = oneItem(3) ** scalar(2);
|
||||||
try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 3 }));
|
try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 3 }));
|
||||||
|
|
@ -782,6 +789,7 @@ test "array concatenation peer resolves element types - pointer" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a = [2]u3{ 1, 7 };
|
var a = [2]u3{ 1, 7 };
|
||||||
var b = [3]u8{ 200, 225, 255 };
|
var b = [3]u8{ 200, 225, 255 };
|
||||||
|
|
@ -799,6 +807,7 @@ test "array concatenation sets the sentinel - value" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a = [2]u3{ 1, 7 };
|
var a = [2]u3{ 1, 7 };
|
||||||
var b = [3:69]u8{ 200, 225, 255 };
|
var b = [3:69]u8{ 200, 225, 255 };
|
||||||
|
|
@ -818,6 +827,7 @@ test "array concatenation sets the sentinel - pointer" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a = [2]u3{ 1, 7 };
|
var a = [2]u3{ 1, 7 };
|
||||||
var b = [3:69]u8{ 200, 225, 255 };
|
var b = [3:69]u8{ 200, 225, 255 };
|
||||||
|
|
@ -837,6 +847,7 @@ test "array multiplication sets the sentinel - value" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a = [2:7]u3{ 1, 6 };
|
var a = [2:7]u3{ 1, 6 };
|
||||||
_ = &a;
|
_ = &a;
|
||||||
|
|
@ -855,6 +866,7 @@ test "array multiplication sets the sentinel - pointer" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a = [2:7]u3{ 1, 6 };
|
var a = [2:7]u3{ 1, 6 };
|
||||||
const b = &a ** 2;
|
const b = &a ** 2;
|
||||||
|
|
@ -938,6 +950,8 @@ test "comptime pointer load through elem_ptr" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "debug variable type resolved through indirect zero-bit types" {
|
test "debug variable type resolved through indirect zero-bit types" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const T = struct { key: []void };
|
const T = struct { key: []void };
|
||||||
const slice: []const T = &[_]T{};
|
const slice: []const T = &[_]T{};
|
||||||
_ = slice;
|
_ = slice;
|
||||||
|
|
@ -1098,6 +1112,7 @@ test "no dependency loop for alignment of self struct" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -1136,6 +1151,7 @@ test "no dependency loop for alignment of self bare union" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -1174,6 +1190,7 @@ test "no dependency loop for alignment of self tagged union" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -1361,6 +1378,8 @@ test "lazy sizeof is resolved in division" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "lazy sizeof union tag size in compare" {
|
test "lazy sizeof union tag size in compare" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const A = union(enum) {
|
const A = union(enum) {
|
||||||
a: void,
|
a: void,
|
||||||
b: void,
|
b: void,
|
||||||
|
|
@ -1373,6 +1392,7 @@ test "lazy value is resolved as slice operand" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const A = struct { a: u32 };
|
const A = struct { a: u32 };
|
||||||
var a: [512]u64 = undefined;
|
var a: [512]u64 = undefined;
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ export fn testPackedStuff(a: *const PackedStruct, b: *const PackedUnion) void {
|
||||||
|
|
||||||
test "export function alias" {
|
test "export function alias" {
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
_ = struct {
|
_ = struct {
|
||||||
fn foo_internal() callconv(.c) u32 {
|
fn foo_internal() callconv(.c) u32 {
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ const expect = @import("std").testing.expect;
|
||||||
const builtin = @import("builtin");
|
const builtin = @import("builtin");
|
||||||
|
|
||||||
test "@fieldParentPtr struct" {
|
test "@fieldParentPtr struct" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const C = struct {
|
const C = struct {
|
||||||
|
|
@ -138,6 +139,7 @@ test "@fieldParentPtr struct" {
|
||||||
|
|
||||||
test "@fieldParentPtr extern struct" {
|
test "@fieldParentPtr extern struct" {
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const C = extern struct {
|
const C = extern struct {
|
||||||
a: bool = true,
|
a: bool = true,
|
||||||
|
|
@ -1344,6 +1346,7 @@ test "@fieldParentPtr packed struct last zero-bit field" {
|
||||||
|
|
||||||
test "@fieldParentPtr tagged union" {
|
test "@fieldParentPtr tagged union" {
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const C = union(enum) {
|
const C = union(enum) {
|
||||||
a: bool,
|
a: bool,
|
||||||
|
|
@ -1478,6 +1481,7 @@ test "@fieldParentPtr tagged union" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "@fieldParentPtr untagged union" {
|
test "@fieldParentPtr untagged union" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const C = union {
|
const C = union {
|
||||||
|
|
@ -1614,6 +1618,7 @@ test "@fieldParentPtr untagged union" {
|
||||||
|
|
||||||
test "@fieldParentPtr extern union" {
|
test "@fieldParentPtr extern union" {
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const C = extern union {
|
const C = extern union {
|
||||||
a: bool,
|
a: bool,
|
||||||
|
|
@ -1889,6 +1894,7 @@ test "@fieldParentPtr tagged union all zero-bit fields" {
|
||||||
if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const C = union(enum) {
|
const C = union(enum) {
|
||||||
a: u0,
|
a: u0,
|
||||||
|
|
|
||||||
|
|
@ -278,6 +278,7 @@ test "@sqrt f16" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testSqrt(f16);
|
try testSqrt(f16);
|
||||||
try comptime testSqrt(f16);
|
try comptime testSqrt(f16);
|
||||||
|
|
@ -288,6 +289,7 @@ test "@sqrt f32/f64" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testSqrt(f32);
|
try testSqrt(f32);
|
||||||
try comptime testSqrt(f32);
|
try comptime testSqrt(f32);
|
||||||
|
|
@ -299,9 +301,9 @@ test "@sqrt f80/f128/c_longdouble" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
if (builtin.os.tag == .freebsd) {
|
if (builtin.os.tag == .freebsd) {
|
||||||
// TODO https://github.com/ziglang/zig/issues/10875
|
// TODO https://github.com/ziglang/zig/issues/10875
|
||||||
|
|
@ -388,6 +390,7 @@ test "@sqrt with vectors" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testSqrtWithVectors();
|
try testSqrtWithVectors();
|
||||||
try comptime testSqrtWithVectors();
|
try comptime testSqrtWithVectors();
|
||||||
|
|
@ -409,6 +412,7 @@ test "@sin f16" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testSin(f16);
|
try testSin(f16);
|
||||||
try comptime testSin(f16);
|
try comptime testSin(f16);
|
||||||
|
|
@ -420,6 +424,7 @@ test "@sin f32/f64" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testSin(f32);
|
try testSin(f32);
|
||||||
comptime try testSin(f32);
|
comptime try testSin(f32);
|
||||||
|
|
@ -431,9 +436,9 @@ test "@sin f80/f128/c_longdouble" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testSin(f80);
|
try testSin(f80);
|
||||||
comptime try testSin(f80);
|
comptime try testSin(f80);
|
||||||
|
|
@ -461,6 +466,7 @@ test "@sin with vectors" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testSinWithVectors();
|
try testSinWithVectors();
|
||||||
try comptime testSinWithVectors();
|
try comptime testSinWithVectors();
|
||||||
|
|
@ -482,6 +488,7 @@ test "@cos f16" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testCos(f16);
|
try testCos(f16);
|
||||||
try comptime testCos(f16);
|
try comptime testCos(f16);
|
||||||
|
|
@ -493,6 +500,7 @@ test "@cos f32/f64" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testCos(f32);
|
try testCos(f32);
|
||||||
try comptime testCos(f32);
|
try comptime testCos(f32);
|
||||||
|
|
@ -504,9 +512,9 @@ test "@cos f80/f128/c_longdouble" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testCos(f80);
|
try testCos(f80);
|
||||||
try comptime testCos(f80);
|
try comptime testCos(f80);
|
||||||
|
|
@ -534,6 +542,7 @@ test "@cos with vectors" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testCosWithVectors();
|
try testCosWithVectors();
|
||||||
try comptime testCosWithVectors();
|
try comptime testCosWithVectors();
|
||||||
|
|
@ -553,9 +562,9 @@ test "@tan f16" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testTan(f16);
|
try testTan(f16);
|
||||||
try comptime testTan(f16);
|
try comptime testTan(f16);
|
||||||
|
|
@ -567,6 +576,7 @@ test "@tan f32/f64" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testTan(f32);
|
try testTan(f32);
|
||||||
try comptime testTan(f32);
|
try comptime testTan(f32);
|
||||||
|
|
@ -578,9 +588,9 @@ test "@tan f80/f128/c_longdouble" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testTan(f80);
|
try testTan(f80);
|
||||||
try comptime testTan(f80);
|
try comptime testTan(f80);
|
||||||
|
|
@ -608,6 +618,7 @@ test "@tan with vectors" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testTanWithVectors();
|
try testTanWithVectors();
|
||||||
try comptime testTanWithVectors();
|
try comptime testTanWithVectors();
|
||||||
|
|
@ -629,6 +640,7 @@ test "@exp f16" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testExp(f16);
|
try testExp(f16);
|
||||||
try comptime testExp(f16);
|
try comptime testExp(f16);
|
||||||
|
|
@ -640,6 +652,7 @@ test "@exp f32/f64" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testExp(f32);
|
try testExp(f32);
|
||||||
try comptime testExp(f32);
|
try comptime testExp(f32);
|
||||||
|
|
@ -651,9 +664,9 @@ test "@exp f80/f128/c_longdouble" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testExp(f80);
|
try testExp(f80);
|
||||||
try comptime testExp(f80);
|
try comptime testExp(f80);
|
||||||
|
|
@ -685,6 +698,7 @@ test "@exp with vectors" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testExpWithVectors();
|
try testExpWithVectors();
|
||||||
try comptime testExpWithVectors();
|
try comptime testExpWithVectors();
|
||||||
|
|
@ -706,6 +720,7 @@ test "@exp2 f16" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testExp2(f16);
|
try testExp2(f16);
|
||||||
try comptime testExp2(f16);
|
try comptime testExp2(f16);
|
||||||
|
|
@ -717,6 +732,7 @@ test "@exp2 f32/f64" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testExp2(f32);
|
try testExp2(f32);
|
||||||
try comptime testExp2(f32);
|
try comptime testExp2(f32);
|
||||||
|
|
@ -728,9 +744,9 @@ test "@exp2 f80/f128/c_longdouble" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testExp2(f80);
|
try testExp2(f80);
|
||||||
try comptime testExp2(f80);
|
try comptime testExp2(f80);
|
||||||
|
|
@ -757,6 +773,7 @@ test "@exp2 with @vectors" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testExp2WithVectors();
|
try testExp2WithVectors();
|
||||||
try comptime testExp2WithVectors();
|
try comptime testExp2WithVectors();
|
||||||
|
|
@ -778,6 +795,7 @@ test "@log f16" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testLog(f16);
|
try testLog(f16);
|
||||||
try comptime testLog(f16);
|
try comptime testLog(f16);
|
||||||
|
|
@ -789,6 +807,7 @@ test "@log f32/f64" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testLog(f32);
|
try testLog(f32);
|
||||||
try comptime testLog(f32);
|
try comptime testLog(f32);
|
||||||
|
|
@ -800,9 +819,9 @@ test "@log f80/f128/c_longdouble" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testLog(f80);
|
try testLog(f80);
|
||||||
try comptime testLog(f80);
|
try comptime testLog(f80);
|
||||||
|
|
@ -830,6 +849,7 @@ test "@log with @vectors" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
{
|
{
|
||||||
var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 };
|
var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 };
|
||||||
|
|
@ -848,6 +868,7 @@ test "@log2 f16" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testLog2(f16);
|
try testLog2(f16);
|
||||||
try comptime testLog2(f16);
|
try comptime testLog2(f16);
|
||||||
|
|
@ -859,6 +880,7 @@ test "@log2 f32/f64" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testLog2(f32);
|
try testLog2(f32);
|
||||||
try comptime testLog2(f32);
|
try comptime testLog2(f32);
|
||||||
|
|
@ -870,9 +892,9 @@ test "@log2 f80/f128/c_longdouble" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testLog2(f80);
|
try testLog2(f80);
|
||||||
try comptime testLog2(f80);
|
try comptime testLog2(f80);
|
||||||
|
|
@ -898,6 +920,7 @@ test "@log2 with vectors" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
// https://github.com/ziglang/zig/issues/13681
|
// https://github.com/ziglang/zig/issues/13681
|
||||||
if (builtin.zig_backend == .stage2_llvm and
|
if (builtin.zig_backend == .stage2_llvm and
|
||||||
builtin.cpu.arch == .aarch64 and
|
builtin.cpu.arch == .aarch64 and
|
||||||
|
|
@ -924,6 +947,7 @@ test "@log10 f16" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testLog10(f16);
|
try testLog10(f16);
|
||||||
try comptime testLog10(f16);
|
try comptime testLog10(f16);
|
||||||
|
|
@ -935,6 +959,7 @@ test "@log10 f32/f64" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testLog10(f32);
|
try testLog10(f32);
|
||||||
try comptime testLog10(f32);
|
try comptime testLog10(f32);
|
||||||
|
|
@ -946,9 +971,9 @@ test "@log10 f80/f128/c_longdouble" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testLog10(f80);
|
try testLog10(f80);
|
||||||
try comptime testLog10(f80);
|
try comptime testLog10(f80);
|
||||||
|
|
@ -975,6 +1000,7 @@ test "@log10 with vectors" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testLog10WithVectors();
|
try testLog10WithVectors();
|
||||||
try comptime testLog10WithVectors();
|
try comptime testLog10WithVectors();
|
||||||
|
|
|
||||||
|
|
@ -257,6 +257,7 @@ test "implicit cast fn call result to optional in field result" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn entry() !void {
|
fn entry() !void {
|
||||||
|
|
@ -468,6 +469,7 @@ test "method call with optional and error union first param" {
|
||||||
test "method call with optional pointer first param" {
|
test "method call with optional pointer first param" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
x: i32 = 1234,
|
x: i32 = 1234,
|
||||||
|
|
@ -619,6 +621,8 @@ test "inline function with comptime-known comptime-only return type called at ru
|
||||||
}
|
}
|
||||||
|
|
||||||
test "address of function parameter is consistent" {
|
test "address of function parameter is consistent" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn paramAddrMatch(x: u8) bool {
|
fn paramAddrMatch(x: u8) bool {
|
||||||
return &x == &x;
|
return &x == &x;
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,8 @@ fn get_foo() fn (*u8) usize {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "define a function in an anonymous struct in comptime" {
|
test "define a function in an anonymous struct in comptime" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const foo = get_foo();
|
const foo = get_foo();
|
||||||
try expect(foo(@as(*u8, @ptrFromInt(12345))) == 12345);
|
try expect(foo(@as(*u8, @ptrFromInt(12345))) == 12345);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,7 @@ test "basic for loop" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const expected_result = [_]u8{ 9, 8, 7, 6, 0, 1, 2, 3 } ** 3;
|
const expected_result = [_]u8{ 9, 8, 7, 6, 0, 1, 2, 3 } ** 3;
|
||||||
|
|
||||||
|
|
@ -112,6 +113,7 @@ test "for with null and T peer types and inferred result location type" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest(slice: []const u8) !void {
|
fn doTheTest(slice: []const u8) !void {
|
||||||
|
|
@ -153,6 +155,7 @@ test "for loop with pointer elem var" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const source = "abcdefg";
|
const source = "abcdefg";
|
||||||
var target: [source.len]u8 = undefined;
|
var target: [source.len]u8 = undefined;
|
||||||
|
|
@ -198,6 +201,7 @@ test "for on slice with allowzero ptr" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest(slice: []const u8) !void {
|
fn doTheTest(slice: []const u8) !void {
|
||||||
|
|
@ -213,6 +217,7 @@ test "for on slice with allowzero ptr" {
|
||||||
test "else continue outer for" {
|
test "else continue outer for" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var i: usize = 6;
|
var i: usize = 6;
|
||||||
var buf: [5]u8 = undefined;
|
var buf: [5]u8 = undefined;
|
||||||
|
|
@ -308,6 +313,7 @@ test "slice and two counters, one is offset and one is runtime" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const slice: []const u8 = "blah";
|
const slice: []const u8 = "blah";
|
||||||
var start: usize = 0;
|
var start: usize = 0;
|
||||||
|
|
@ -337,6 +343,7 @@ test "two slices, one captured by-ref" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var buf: [10]u8 = undefined;
|
var buf: [10]u8 = undefined;
|
||||||
const slice1: []const u8 = "blah";
|
const slice1: []const u8 = "blah";
|
||||||
|
|
@ -356,6 +363,7 @@ test "raw pointer and slice" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var buf: [10]u8 = undefined;
|
var buf: [10]u8 = undefined;
|
||||||
const slice: []const u8 = "blah";
|
const slice: []const u8 = "blah";
|
||||||
|
|
@ -375,6 +383,7 @@ test "raw pointer and counter" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var buf: [10]u8 = undefined;
|
var buf: [10]u8 = undefined;
|
||||||
const ptr: [*]u8 = &buf;
|
const ptr: [*]u8 = &buf;
|
||||||
|
|
@ -424,6 +433,7 @@ test "inline for with counter as the comptime-known" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var runtime_slice = "hello";
|
var runtime_slice = "hello";
|
||||||
var runtime_i: usize = 3;
|
var runtime_i: usize = 3;
|
||||||
|
|
|
||||||
|
|
@ -90,6 +90,7 @@ test "type constructed by comptime function call" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var l: SimpleList(10) = undefined;
|
var l: SimpleList(10) = undefined;
|
||||||
l.array[0] = 10;
|
l.array[0] = 10;
|
||||||
|
|
@ -155,6 +156,7 @@ test "generic fn with implicit cast" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try expect(getFirstByte(u8, &[_]u8{13}) == 13);
|
try expect(getFirstByte(u8, &[_]u8{13}) == 13);
|
||||||
try expect(getFirstByte(u16, &[_]u16{
|
try expect(getFirstByte(u16, &[_]u16{
|
||||||
|
|
@ -208,6 +210,7 @@ fn foo2(arg: anytype) bool {
|
||||||
|
|
||||||
test "generic struct" {
|
test "generic struct" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a1 = GenNode(i32){
|
var a1 = GenNode(i32){
|
||||||
.value = 13,
|
.value = 13,
|
||||||
|
|
@ -249,6 +252,7 @@ test "generic function instantiation turns into comptime call" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -316,6 +320,8 @@ test "generic function instantiation non-duplicates" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
if (builtin.os.tag == .wasi) return error.SkipZigTest;
|
if (builtin.os.tag == .wasi) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
|
|
@ -334,6 +340,7 @@ test "generic function instantiation non-duplicates" {
|
||||||
test "generic instantiation of tagged union with only one field" {
|
test "generic instantiation of tagged union with only one field" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
if (builtin.os.tag == .wasi) return error.SkipZigTest;
|
if (builtin.os.tag == .wasi) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
|
|
@ -368,8 +375,6 @@ test "nested generic function" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "extern function used as generic parameter" {
|
test "extern function used as generic parameter" {
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
extern fn usedAsGenericParameterFoo() void;
|
extern fn usedAsGenericParameterFoo() void;
|
||||||
extern fn usedAsGenericParameterBar() void;
|
extern fn usedAsGenericParameterBar() void;
|
||||||
|
|
@ -406,6 +411,8 @@ test "generic struct as parameter type" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "slice as parameter type" {
|
test "slice as parameter type" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn internComptimeString(comptime str: []const u8) *const []const u8 {
|
fn internComptimeString(comptime str: []const u8) *const []const u8 {
|
||||||
return &struct {
|
return &struct {
|
||||||
|
|
@ -420,6 +427,8 @@ test "slice as parameter type" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "null sentinel pointer passed as generic argument" {
|
test "null sentinel pointer passed as generic argument" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest(a: anytype) !void {
|
fn doTheTest(a: anytype) !void {
|
||||||
try std.testing.expect(@intFromPtr(a) == 8);
|
try std.testing.expect(@intFromPtr(a) == 8);
|
||||||
|
|
@ -442,6 +451,7 @@ test "generic function passed as comptime argument" {
|
||||||
|
|
||||||
test "return type of generic function is function pointer" {
|
test "return type of generic function is function pointer" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn b(comptime T: type) ?*const fn () error{}!T {
|
fn b(comptime T: type) ?*const fn () error{}!T {
|
||||||
|
|
@ -503,6 +513,7 @@ test "union in struct captures argument" {
|
||||||
test "function argument tuple used as struct field" {
|
test "function argument tuple used as struct field" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn DeleagateWithContext(comptime Function: type) type {
|
fn DeleagateWithContext(comptime Function: type) type {
|
||||||
|
|
@ -578,6 +589,7 @@ fn StructCapture(comptime T: type) type {
|
||||||
test "call generic function that uses capture from function declaration's scope" {
|
test "call generic function that uses capture from function declaration's scope" {
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = StructCapture(f64);
|
const S = StructCapture(f64);
|
||||||
const s = S.foo(123);
|
const s = S.foo(123);
|
||||||
|
|
@ -591,6 +603,8 @@ comptime {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "generic parameter resolves to comptime-only type but is not marked comptime" {
|
test "generic parameter resolves to comptime-only type but is not marked comptime" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn foo(comptime T: type, rt_false: bool, func: fn (T) void) T {
|
fn foo(comptime T: type, rt_false: bool, func: fn (T) void) T {
|
||||||
if (rt_false) _ = foo(T, rt_false, func);
|
if (rt_false) _ = foo(T, rt_false, func);
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ test "slices pointing at the same address as global array." {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
const a = [_]u8{ 1, 2, 3 };
|
const a = [_]u8{ 1, 2, 3 };
|
||||||
|
|
@ -83,6 +84,8 @@ test "global const can be self-referential" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "global var can be self-referential" {
|
test "global var can be self-referential" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
self: *@This(),
|
self: *@This(),
|
||||||
x: u32,
|
x: u32,
|
||||||
|
|
@ -134,6 +137,8 @@ test "global const can be indirectly self-referential" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "global var can be indirectly self-referential" {
|
test "global var can be indirectly self-referential" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
other: *@This(),
|
other: *@This(),
|
||||||
x: u32,
|
x: u32,
|
||||||
|
|
|
||||||
|
|
@ -118,6 +118,7 @@ test "if peer expressions inferred optional type" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var self: []const u8 = "abcdef";
|
var self: []const u8 = "abcdef";
|
||||||
var index: usize = 0;
|
var index: usize = 0;
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ test "strlit to vector" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const strlit = "0123456789abcdef0123456789ABCDEF";
|
const strlit = "0123456789abcdef0123456789ABCDEF";
|
||||||
const vec_from_strlit: @Vector(32, u8) = strlit.*;
|
const vec_from_strlit: @Vector(32, u8) = strlit.*;
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,7 @@ test "@clz" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testClz();
|
try testClz();
|
||||||
try comptime testClz();
|
try comptime testClz();
|
||||||
|
|
@ -153,6 +154,7 @@ test "@ctz" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testCtz();
|
try testCtz();
|
||||||
try comptime testCtz();
|
try comptime testCtz();
|
||||||
|
|
@ -197,6 +199,7 @@ test "@ctz vectors" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testCtzVectors();
|
try testCtzVectors();
|
||||||
try comptime testCtzVectors();
|
try comptime testCtzVectors();
|
||||||
|
|
@ -396,6 +399,7 @@ fn not(comptime T: type, a: T) T {
|
||||||
|
|
||||||
test "binary not" {
|
test "binary not" {
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try expect(not(u0, 0) == 0);
|
try expect(not(u0, 0) == 0);
|
||||||
try expect(not(u1, 0) == 1);
|
try expect(not(u1, 0) == 1);
|
||||||
|
|
@ -474,6 +478,7 @@ test "division" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testIntDivision();
|
try testIntDivision();
|
||||||
try comptime testIntDivision();
|
try comptime testIntDivision();
|
||||||
|
|
@ -676,6 +681,8 @@ fn testSignedWrappingEval(x: i32) !void {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "signed negation wrapping" {
|
test "signed negation wrapping" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testSignedNegationWrappingEval(minInt(i16));
|
try testSignedNegationWrappingEval(minInt(i16));
|
||||||
try comptime testSignedNegationWrappingEval(minInt(i16));
|
try comptime testSignedNegationWrappingEval(minInt(i16));
|
||||||
}
|
}
|
||||||
|
|
@ -781,6 +788,7 @@ fn should_not_be_zero(x: f128) !void {
|
||||||
test "umax wrapped squaring" {
|
test "umax wrapped squaring" {
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
{
|
{
|
||||||
var x: u4 = maxInt(u4);
|
var x: u4 = maxInt(u4);
|
||||||
|
|
@ -894,7 +902,6 @@ test "@addWithOverflow > 64 bits" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
|
|
||||||
|
|
||||||
try testAddWithOverflow(u65, 4, 105, 109, 0);
|
try testAddWithOverflow(u65, 4, 105, 109, 0);
|
||||||
try testAddWithOverflow(u65, 1000, 100, 1100, 0);
|
try testAddWithOverflow(u65, 1000, 100, 1100, 0);
|
||||||
|
|
@ -975,6 +982,7 @@ test "extensive @mulWithOverflow" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testMulWithOverflow(u5, 3, 10, 30, 0);
|
try testMulWithOverflow(u5, 3, 10, 30, 0);
|
||||||
try testMulWithOverflow(u5, 3, 11, 1, 1);
|
try testMulWithOverflow(u5, 3, 11, 1, 1);
|
||||||
|
|
@ -1616,6 +1624,7 @@ test "vector integer addition" {
|
||||||
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -1681,6 +1690,8 @@ test "vector comparison" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and
|
if (builtin.zig_backend == .stage2_x86_64 and
|
||||||
!comptime std.Target.x86.featureSetHas(builtin.cpu.features, .avx2)) return error.SkipZigTest;
|
!comptime std.Target.x86.featureSetHas(builtin.cpu.features, .avx2)) return error.SkipZigTest;
|
||||||
|
|
||||||
|
|
@ -1777,6 +1788,7 @@ test "@clz works on both vector and scalar inputs" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var x: u32 = 0x1;
|
var x: u32 = 0x1;
|
||||||
_ = &x;
|
_ = &x;
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ test "@max on vectors" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
|
|
@ -88,6 +89,7 @@ test "@min for vectors" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
|
|
@ -320,6 +322,8 @@ test "@min/@max notices bounds from vector types when element of comptime-known
|
||||||
}
|
}
|
||||||
|
|
||||||
test "@min/@max of signed and unsigned runtime integers" {
|
test "@min/@max of signed and unsigned runtime integers" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var x: i32 = -1;
|
var x: i32 = -1;
|
||||||
var y: u31 = 1;
|
var y: u31 = 1;
|
||||||
_ = .{ &x, &y };
|
_ = .{ &x, &y };
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ test "@memcpy with both operands single-ptr-to-array, one is null-terminated" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testMemcpyBothSinglePtrArrayOneIsNullTerminated();
|
try testMemcpyBothSinglePtrArrayOneIsNullTerminated();
|
||||||
try comptime testMemcpyBothSinglePtrArrayOneIsNullTerminated();
|
try comptime testMemcpyBothSinglePtrArrayOneIsNullTerminated();
|
||||||
|
|
@ -49,6 +50,7 @@ test "@memcpy dest many pointer" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testMemcpyDestManyPtr();
|
try testMemcpyDestManyPtr();
|
||||||
try comptime testMemcpyDestManyPtr();
|
try comptime testMemcpyDestManyPtr();
|
||||||
|
|
@ -71,6 +73,7 @@ test "@memcpy slice" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testMemcpySlice();
|
try testMemcpySlice();
|
||||||
try comptime testMemcpySlice();
|
try comptime testMemcpySlice();
|
||||||
|
|
@ -113,6 +116,8 @@ test "@memcpy comptime-only type" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "@memcpy zero-bit type with aliasing" {
|
test "@memcpy zero-bit type with aliasing" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() void {
|
fn doTheTest() void {
|
||||||
var buf: [3]void = @splat({});
|
var buf: [3]void = @splat({});
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ test "@mulAdd" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try comptime testMulAdd();
|
try comptime testMulAdd();
|
||||||
try testMulAdd();
|
try testMulAdd();
|
||||||
|
|
@ -36,6 +37,7 @@ test "@mulAdd f16" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try comptime testMulAdd16();
|
try comptime testMulAdd16();
|
||||||
try testMulAdd16();
|
try testMulAdd16();
|
||||||
|
|
@ -111,6 +113,7 @@ test "vector f16" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try comptime vector16();
|
try comptime vector16();
|
||||||
try vector16();
|
try vector16();
|
||||||
|
|
@ -136,6 +139,7 @@ test "vector f32" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try comptime vector32();
|
try comptime vector32();
|
||||||
try vector32();
|
try vector32();
|
||||||
|
|
@ -161,6 +165,7 @@ test "vector f64" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try comptime vector64();
|
try comptime vector64();
|
||||||
try vector64();
|
try vector64();
|
||||||
|
|
|
||||||
|
|
@ -131,6 +131,7 @@ test "null with default unwrap" {
|
||||||
|
|
||||||
test "optional pointer to 0 bit type null value at runtime" {
|
test "optional pointer to 0 bit type null value at runtime" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const EmptyStruct = struct {};
|
const EmptyStruct = struct {};
|
||||||
var x: ?*EmptyStruct = null;
|
var x: ?*EmptyStruct = null;
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ pub const EmptyStruct = struct {};
|
||||||
|
|
||||||
test "optional pointer to size zero struct" {
|
test "optional pointer to size zero struct" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var e = EmptyStruct{};
|
var e = EmptyStruct{};
|
||||||
const o: ?*EmptyStruct = &e;
|
const o: ?*EmptyStruct = &e;
|
||||||
|
|
@ -35,6 +36,8 @@ test "optional pointer to size zero struct" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "equality compare optional pointers" {
|
test "equality compare optional pointers" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testNullPtrsEql();
|
try testNullPtrsEql();
|
||||||
try comptime testNullPtrsEql();
|
try comptime testNullPtrsEql();
|
||||||
}
|
}
|
||||||
|
|
@ -112,6 +115,7 @@ test "address of unwrap optional" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
const Foo = struct {
|
const Foo = struct {
|
||||||
|
|
@ -236,6 +240,7 @@ test "compare optionals with modified payloads" {
|
||||||
|
|
||||||
test "unwrap function call with optional pointer return value" {
|
test "unwrap function call with optional pointer return value" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
|
|
@ -284,6 +289,7 @@ test "nested orelse" {
|
||||||
test "self-referential struct through a slice of optional" {
|
test "self-referential struct through a slice of optional" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
const Node = struct {
|
const Node = struct {
|
||||||
|
|
@ -391,6 +397,7 @@ test "array of optional unaligned types" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const Enum = enum { one, two, three };
|
const Enum = enum { one, two, three };
|
||||||
|
|
||||||
|
|
@ -513,7 +520,6 @@ test "mutable optional of noreturn" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "orelse on C pointer" {
|
test "orelse on C pointer" {
|
||||||
|
|
||||||
// TODO https://github.com/ziglang/zig/issues/6597
|
// TODO https://github.com/ziglang/zig/issues/6597
|
||||||
const foo: [*c]const u8 = "hey";
|
const foo: [*c]const u8 = "hey";
|
||||||
const d = foo orelse @compileError("bad");
|
const d = foo orelse @compileError("bad");
|
||||||
|
|
@ -543,6 +549,7 @@ test "Optional slice size is optimized" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try expect(@sizeOf(?[]u8) == @sizeOf([]u8));
|
try expect(@sizeOf(?[]u8) == @sizeOf([]u8));
|
||||||
var a: ?[]const u8 = null;
|
var a: ?[]const u8 = null;
|
||||||
|
|
|
||||||
|
|
@ -1299,6 +1299,8 @@ test "packed struct contains optional pointer" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "packed struct equality" {
|
test "packed struct equality" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const Foo = packed struct {
|
const Foo = packed struct {
|
||||||
a: u4,
|
a: u4,
|
||||||
b: u4,
|
b: u4,
|
||||||
|
|
@ -1319,6 +1321,8 @@ test "packed struct equality" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "packed struct with signed field" {
|
test "packed struct with signed field" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var s: packed struct {
|
var s: packed struct {
|
||||||
a: i2,
|
a: i2,
|
||||||
b: u6,
|
b: u6,
|
||||||
|
|
@ -1332,6 +1336,7 @@ test "assign packed struct initialized with RLS to packed struct literal field"
|
||||||
if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isWasm()) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isWasm()) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const Inner = packed struct { x: u17 };
|
const Inner = packed struct { x: u17 };
|
||||||
const Outer = packed struct { inner: Inner, x: u15 };
|
const Outer = packed struct { inner: Inner, x: u15 };
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ test "pointer-integer arithmetic" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var ptr: [*]const u8 = "abcd";
|
var ptr: [*]const u8 = "abcd";
|
||||||
|
|
||||||
|
|
@ -100,6 +101,8 @@ test "pointer subtraction" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "pointer arithmetic with non-trivial RHS" {
|
test "pointer arithmetic with non-trivial RHS" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var t: bool = undefined;
|
var t: bool = undefined;
|
||||||
t = true;
|
t = true;
|
||||||
|
|
||||||
|
|
@ -124,6 +127,7 @@ fn PtrOf(comptime T: type) type {
|
||||||
|
|
||||||
test "implicit cast single item pointer to C pointer and back" {
|
test "implicit cast single item pointer to C pointer and back" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var y: u8 = 11;
|
var y: u8 = 11;
|
||||||
const x: [*c]u8 = &y;
|
const x: [*c]u8 = &y;
|
||||||
|
|
@ -140,6 +144,7 @@ test "initialize const optional C pointer to null" {
|
||||||
|
|
||||||
test "assigning integer to C pointer" {
|
test "assigning integer to C pointer" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var x: i32 = 0;
|
var x: i32 = 0;
|
||||||
var y: i32 = 1;
|
var y: i32 = 1;
|
||||||
|
|
@ -157,6 +162,7 @@ test "assigning integer to C pointer" {
|
||||||
|
|
||||||
test "C pointer comparison and arithmetic" {
|
test "C pointer comparison and arithmetic" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -200,6 +206,8 @@ fn testDerefPtrOneVal() !void {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "peer type resolution with C pointers" {
|
test "peer type resolution with C pointers" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const ptr_one: *u8 = undefined;
|
const ptr_one: *u8 = undefined;
|
||||||
const ptr_many: [*]u8 = undefined;
|
const ptr_many: [*]u8 = undefined;
|
||||||
const ptr_c: [*c]u8 = undefined;
|
const ptr_c: [*c]u8 = undefined;
|
||||||
|
|
@ -227,6 +235,7 @@ test "implicit casting between C pointer and optional non-C pointer" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var slice: []const u8 = "aoeu";
|
var slice: []const u8 = "aoeu";
|
||||||
_ = &slice;
|
_ = &slice;
|
||||||
|
|
@ -271,6 +280,7 @@ test "allowzero pointer and slice" {
|
||||||
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var ptr: [*]allowzero i32 = @ptrFromInt(0);
|
var ptr: [*]allowzero i32 = @ptrFromInt(0);
|
||||||
const opt_ptr: ?[*]allowzero i32 = ptr;
|
const opt_ptr: ?[*]allowzero i32 = ptr;
|
||||||
|
|
@ -290,6 +300,7 @@ test "assign null directly to C pointer and test null equality" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var x: [*c]i32 = null;
|
var x: [*c]i32 = null;
|
||||||
_ = &x;
|
_ = &x;
|
||||||
|
|
@ -357,6 +368,7 @@ test "array initialization types" {
|
||||||
test "null terminated pointer" {
|
test "null terminated pointer" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -375,6 +387,7 @@ test "allow any sentinel" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -391,6 +404,7 @@ test "pointer sentinel with enums" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
const Number = enum {
|
const Number = enum {
|
||||||
|
|
@ -414,6 +428,7 @@ test "pointer sentinel with optional element" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -431,6 +446,7 @@ test "pointer sentinel with +inf" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -452,6 +468,8 @@ test "pointer to array at fixed address" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "pointer-integer arithmetic affects the alignment" {
|
test "pointer-integer arithmetic affects the alignment" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
{
|
{
|
||||||
var ptr: [*]align(8) u32 = undefined;
|
var ptr: [*]align(8) u32 = undefined;
|
||||||
var x: usize = 1;
|
var x: usize = 1;
|
||||||
|
|
@ -500,6 +518,7 @@ test "indexing array with sentinel returns correct type" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var s: [:0]const u8 = "abc";
|
var s: [:0]const u8 = "abc";
|
||||||
try testing.expectEqualSlices(u8, "*const u8", @typeName(@TypeOf(&s[0])));
|
try testing.expectEqualSlices(u8, "*const u8", @typeName(@TypeOf(&s[0])));
|
||||||
|
|
@ -508,6 +527,7 @@ test "indexing array with sentinel returns correct type" {
|
||||||
test "element pointer to slice" {
|
test "element pointer to slice" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -530,6 +550,7 @@ test "element pointer to slice" {
|
||||||
test "element pointer arithmetic to slice" {
|
test "element pointer arithmetic to slice" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -554,6 +575,7 @@ test "element pointer arithmetic to slice" {
|
||||||
|
|
||||||
test "array slicing to slice" {
|
test "array slicing to slice" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -584,6 +606,7 @@ test "ptrCast comptime known slice to C pointer" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const s: [:0]const u8 = "foo";
|
const s: [:0]const u8 = "foo";
|
||||||
var p: [*c]const u8 = @ptrCast(s);
|
var p: [*c]const u8 = @ptrCast(s);
|
||||||
|
|
@ -603,6 +626,7 @@ test "pointer alignment and element type include call expression" {
|
||||||
|
|
||||||
test "pointer to array has explicit alignment" {
|
test "pointer to array has explicit alignment" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
const Base = extern struct { a: u8 };
|
const Base = extern struct { a: u8 };
|
||||||
|
|
@ -679,6 +703,7 @@ fn constant() !void {
|
||||||
|
|
||||||
test "pointer-to-array constness for zero-size elements, var" {
|
test "pointer-to-array constness for zero-size elements, var" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try mutable();
|
try mutable();
|
||||||
try comptime mutable();
|
try comptime mutable();
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,7 @@ fn testReinterpretStructWrappedBytesAsInteger() !void {
|
||||||
test "reinterpret bytes of an array into an extern struct" {
|
test "reinterpret bytes of an array into an extern struct" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testReinterpretBytesAsExternStruct();
|
try testReinterpretBytesAsExternStruct();
|
||||||
try comptime testReinterpretBytesAsExternStruct();
|
try comptime testReinterpretBytesAsExternStruct();
|
||||||
|
|
@ -232,6 +233,7 @@ test "implicit optional pointer to optional anyopaque pointer" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var buf: [4]u8 = "aoeu".*;
|
var buf: [4]u8 = "aoeu".*;
|
||||||
const x: ?[*]u8 = &buf;
|
const x: ?[*]u8 = &buf;
|
||||||
|
|
@ -244,6 +246,7 @@ test "@ptrCast slice to slice" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn foo(slice: []u32) []i32 {
|
fn foo(slice: []u32) []i32 {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ test "mutate through ptr initialized with constant ptrFromInt value" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
forceCompilerAnalyzeBranchHardCodedPtrDereference(false);
|
forceCompilerAnalyzeBranchHardCodedPtrDereference(false);
|
||||||
}
|
}
|
||||||
|
|
@ -34,6 +35,7 @@ test "@ptrFromInt creates null pointer" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const ptr = @as(?*u32, @ptrFromInt(0));
|
const ptr = @as(?*u32, @ptrFromInt(0));
|
||||||
try expectEqual(@as(?*u32, null), ptr);
|
try expectEqual(@as(?*u32, null), ptr);
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ test "reference a variable in an if after an if in the 2nd switch prong" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try foo(true, Num.Two, false, "aoeu");
|
try foo(true, Num.Two, false, "aoeu");
|
||||||
try expect(!ok);
|
try expect(!ok);
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ test "@select vectors" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try comptime selectVectors();
|
try comptime selectVectors();
|
||||||
try selectVectors();
|
try selectVectors();
|
||||||
|
|
@ -39,6 +40,7 @@ test "@select arrays" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and
|
if (builtin.zig_backend == .stage2_x86_64 and
|
||||||
!comptime std.Target.x86.featureSetHas(builtin.cpu.features, .avx2)) return error.SkipZigTest;
|
!comptime std.Target.x86.featureSetHas(builtin.cpu.features, .avx2)) return error.SkipZigTest;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ test "@shuffle int" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and
|
if (builtin.zig_backend == .stage2_x86_64 and
|
||||||
!comptime std.Target.x86.featureSetHas(builtin.cpu.features, .ssse3)) return error.SkipZigTest;
|
!comptime std.Target.x86.featureSetHas(builtin.cpu.features, .ssse3)) return error.SkipZigTest;
|
||||||
|
|
||||||
|
|
@ -57,6 +58,7 @@ test "@shuffle int strange sizes" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try comptime testShuffle(2, 2, 2);
|
try comptime testShuffle(2, 2, 2);
|
||||||
try testShuffle(2, 2, 2);
|
try testShuffle(2, 2, 2);
|
||||||
|
|
@ -139,6 +141,7 @@ test "@shuffle bool 1" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -162,6 +165,7 @@ test "@shuffle bool 2" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
|
||||||
|
|
@ -327,6 +327,7 @@ test "peer type resolution with @TypeOf doesn't trigger dependency loop check" {
|
||||||
if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const T = struct {
|
const T = struct {
|
||||||
next: @TypeOf(null, @as(*const @This(), undefined)),
|
next: @TypeOf(null, @as(*const @This(), undefined)),
|
||||||
|
|
@ -420,8 +421,6 @@ test "Extern function calls in @TypeOf" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "Peer resolution of extern function calls in @TypeOf" {
|
test "Peer resolution of extern function calls in @TypeOf" {
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
|
|
||||||
const Test = struct {
|
const Test = struct {
|
||||||
fn test_fn() @TypeOf(c_ftell(null), c_fputs(null, null)) {
|
fn test_fn() @TypeOf(c_ftell(null), c_fputs(null, null)) {
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -439,7 +438,6 @@ test "Peer resolution of extern function calls in @TypeOf" {
|
||||||
test "Extern function calls, dereferences and field access in @TypeOf" {
|
test "Extern function calls, dereferences and field access in @TypeOf" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
|
|
||||||
const Test = struct {
|
const Test = struct {
|
||||||
fn test_fn_1(a: c_long) @TypeOf(c_fopen("test", "r").*) {
|
fn test_fn_1(a: c_long) @TypeOf(c_fopen("test", "r").*) {
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ comptime {
|
||||||
|
|
||||||
test "slicing" {
|
test "slicing" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var array: [20]i32 = undefined;
|
var array: [20]i32 = undefined;
|
||||||
|
|
||||||
|
|
@ -77,6 +78,7 @@ fn assertLenIsZero(msg: []const u8) !void {
|
||||||
|
|
||||||
test "access len index of sentinel-terminated slice" {
|
test "access len index of sentinel-terminated slice" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -100,6 +102,7 @@ test "comptime slice of slice preserves comptime var" {
|
||||||
|
|
||||||
test "open slice of open slice with sentinel" {
|
test "open slice of open slice with sentinel" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var slice: [:0]const u8 = "hello";
|
var slice: [:0]const u8 = "hello";
|
||||||
_ = &slice;
|
_ = &slice;
|
||||||
|
|
@ -117,6 +120,7 @@ test "open slice of open slice with sentinel" {
|
||||||
|
|
||||||
test "open slice with sentinel of slice with end index" {
|
test "open slice with sentinel of slice with end index" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var slice: [:0]const u8 = "hello";
|
var slice: [:0]const u8 = "hello";
|
||||||
_ = &slice;
|
_ = &slice;
|
||||||
|
|
@ -169,6 +173,8 @@ fn memFree(comptime T: type, memory: []T) void {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "slice of hardcoded address to pointer" {
|
test "slice of hardcoded address to pointer" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
const pointer = @as([*]u8, @ptrFromInt(0x04))[0..2];
|
const pointer = @as([*]u8, @ptrFromInt(0x04))[0..2];
|
||||||
|
|
@ -207,6 +213,7 @@ test "comptime pointer cast array and then slice" {
|
||||||
test "slicing zero length array" {
|
test "slicing zero length array" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const s1 = ""[0..];
|
const s1 = ""[0..];
|
||||||
const s2 = ([_]u32{})[0..];
|
const s2 = ([_]u32{})[0..];
|
||||||
|
|
@ -217,6 +224,8 @@ test "slicing zero length array" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "slicing pointer by length" {
|
test "slicing pointer by length" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const array = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 };
|
const array = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 };
|
||||||
const ptr: [*]const u8 = @as([*]const u8, @ptrCast(&array));
|
const ptr: [*]const u8 = @as([*]const u8, @ptrCast(&array));
|
||||||
const slice = ptr[1..][0..5];
|
const slice = ptr[1..][0..5];
|
||||||
|
|
@ -238,6 +247,8 @@ test "compile time slice of pointer to hard coded address" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "slice string literal has correct type" {
|
test "slice string literal has correct type" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
comptime {
|
comptime {
|
||||||
try expect(@TypeOf("aoeu"[0..]) == *const [4:0]u8);
|
try expect(@TypeOf("aoeu"[0..]) == *const [4:0]u8);
|
||||||
const array = [_]i32{ 1, 2, 3, 4 };
|
const array = [_]i32{ 1, 2, 3, 4 };
|
||||||
|
|
@ -265,6 +276,7 @@ test "runtime safety lets us slice from len..len" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var an_array = [_]u8{ 1, 2, 3 };
|
var an_array = [_]u8{ 1, 2, 3 };
|
||||||
try expect(mem.eql(u8, sliceFromLenToLen(an_array[0..], 3, 3), ""));
|
try expect(mem.eql(u8, sliceFromLenToLen(an_array[0..], 3, 3), ""));
|
||||||
|
|
@ -277,6 +289,7 @@ fn sliceFromLenToLen(a_slice: []u8, start: usize, end: usize) []u8 {
|
||||||
test "C pointer" {
|
test "C pointer" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var buf: [*c]const u8 = "kjdhfkjdhfdkjhfkfjhdfkjdhfkdjhfdkjhf";
|
var buf: [*c]const u8 = "kjdhfkjdhfdkjhfkfjhdfkjdhfkdjhfdkjhf";
|
||||||
var len: u32 = 10;
|
var len: u32 = 10;
|
||||||
|
|
@ -289,6 +302,7 @@ test "C pointer slice access" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var buf: [10]u32 = [1]u32{42} ** 10;
|
var buf: [10]u32 = [1]u32{42} ** 10;
|
||||||
const c_ptr = @as([*c]const u32, @ptrCast(&buf));
|
const c_ptr = @as([*c]const u32, @ptrCast(&buf));
|
||||||
|
|
@ -319,6 +333,7 @@ fn sliceSum(comptime q: []const u8) i32 {
|
||||||
test "slice type with custom alignment" {
|
test "slice type with custom alignment" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const LazilyResolvedType = struct {
|
const LazilyResolvedType = struct {
|
||||||
anything: i32,
|
anything: i32,
|
||||||
|
|
@ -332,6 +347,7 @@ test "slice type with custom alignment" {
|
||||||
|
|
||||||
test "obtaining a null terminated slice" {
|
test "obtaining a null terminated slice" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
// here we have a normal array
|
// here we have a normal array
|
||||||
var buf: [50]u8 = undefined;
|
var buf: [50]u8 = undefined;
|
||||||
|
|
@ -376,6 +392,7 @@ test "empty array to slice" {
|
||||||
test "@ptrCast slice to pointer" {
|
test "@ptrCast slice to pointer" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -392,6 +409,7 @@ test "@ptrCast slice to pointer" {
|
||||||
|
|
||||||
test "slice multi-pointer without end" {
|
test "slice multi-pointer without end" {
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -649,6 +667,7 @@ test "slice syntax resulting in pointer-to-array" {
|
||||||
test "slice pointer-to-array null terminated" {
|
test "slice pointer-to-array null terminated" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
comptime {
|
comptime {
|
||||||
var array = [5:0]u8{ 1, 2, 3, 4, 5 };
|
var array = [5:0]u8{ 1, 2, 3, 4, 5 };
|
||||||
|
|
@ -667,6 +686,7 @@ test "slice pointer-to-array null terminated" {
|
||||||
|
|
||||||
test "slice pointer-to-array zero length" {
|
test "slice pointer-to-array zero length" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
comptime {
|
comptime {
|
||||||
{
|
{
|
||||||
|
|
@ -701,6 +721,7 @@ test "type coercion of pointer to anon struct literal to pointer to slice" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
const U = union {
|
const U = union {
|
||||||
|
|
@ -757,6 +778,7 @@ test "array mult of slice gives ptr to array" {
|
||||||
|
|
||||||
test "slice bounds in comptime concatenation" {
|
test "slice bounds in comptime concatenation" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const bs = comptime blk: {
|
const bs = comptime blk: {
|
||||||
const b = "........1........";
|
const b = "........1........";
|
||||||
|
|
@ -792,6 +814,7 @@ test "slice sentinel access at comptime" {
|
||||||
test "slicing array with sentinel as end index" {
|
test "slicing array with sentinel as end index" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn do() !void {
|
fn do() !void {
|
||||||
|
|
@ -810,6 +833,7 @@ test "slicing array with sentinel as end index" {
|
||||||
test "slicing slice with sentinel as end index" {
|
test "slicing slice with sentinel as end index" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn do() !void {
|
fn do() !void {
|
||||||
|
|
@ -889,6 +913,8 @@ test "slice of void" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "slice with dereferenced value" {
|
test "slice with dereferenced value" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var a: usize = 0;
|
var a: usize = 0;
|
||||||
const idx: *usize = &a;
|
const idx: *usize = &a;
|
||||||
_ = blk: {
|
_ = blk: {
|
||||||
|
|
@ -923,6 +949,7 @@ test "empty slice ptr is non null" {
|
||||||
test "slice decays to many pointer" {
|
test "slice decays to many pointer" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var buf: [8]u8 = "abcdefg\x00".*;
|
var buf: [8]u8 = "abcdefg\x00".*;
|
||||||
const p: [*:0]const u8 = buf[0..7 :0];
|
const p: [*:0]const u8 = buf[0..7 :0];
|
||||||
|
|
@ -933,6 +960,7 @@ test "write through pointer to optional slice arg" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn bar(foo: *?[]const u8) !void {
|
fn bar(foo: *?[]const u8) !void {
|
||||||
|
|
@ -952,6 +980,7 @@ test "modify slice length at comptime" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const arr: [2]u8 = .{ 10, 20 };
|
const arr: [2]u8 = .{ 10, 20 };
|
||||||
comptime var s: []const u8 = arr[0..0];
|
comptime var s: []const u8 = arr[0..0];
|
||||||
|
|
@ -985,6 +1014,7 @@ test "slicing slices gives correct result" {
|
||||||
if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const foo = "1234";
|
const foo = "1234";
|
||||||
const bar = foo[0..4];
|
const bar = foo[0..4];
|
||||||
|
|
@ -1013,6 +1043,7 @@ test "sentinel-terminated 0-length slices" {
|
||||||
if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const u32s: [4]u32 = [_]u32{ 0, 1, 2, 3 };
|
const u32s: [4]u32 = [_]u32{ 0, 1, 2, 3 };
|
||||||
|
|
||||||
|
|
@ -1031,6 +1062,8 @@ test "sentinel-terminated 0-length slices" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "peer slices keep abi alignment with empty struct" {
|
test "peer slices keep abi alignment with empty struct" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var cond: bool = undefined;
|
var cond: bool = undefined;
|
||||||
cond = false;
|
cond = false;
|
||||||
const slice = if (cond) &[1]u32{42} else &.{};
|
const slice = if (cond) &[1]u32{42} else &.{};
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ test "@src" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try doTheTest();
|
try doTheTest();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ const ptr_tag_name: [*:0]const u8 = tag_name;
|
||||||
test "@tagName() returns a string literal" {
|
test "@tagName() returns a string literal" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try std.testing.expect(*const [13:0]u8 == @TypeOf(tag_name));
|
try std.testing.expect(*const [13:0]u8 == @TypeOf(tag_name));
|
||||||
try std.testing.expect(std.mem.eql(u8, "TestEnumValue", tag_name));
|
try std.testing.expect(std.mem.eql(u8, "TestEnumValue", tag_name));
|
||||||
|
|
@ -21,6 +22,7 @@ const ptr_error_name: [*:0]const u8 = error_name;
|
||||||
test "@errorName() returns a string literal" {
|
test "@errorName() returns a string literal" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try std.testing.expect(*const [13:0]u8 == @TypeOf(error_name));
|
try std.testing.expect(*const [13:0]u8 == @TypeOf(error_name));
|
||||||
try std.testing.expect(std.mem.eql(u8, "TestErrorCode", error_name));
|
try std.testing.expect(std.mem.eql(u8, "TestErrorCode", error_name));
|
||||||
|
|
@ -64,6 +66,7 @@ fn testFnForSrc() std.builtin.SourceLocation {
|
||||||
test "@src() returns a struct containing 0-terminated string slices" {
|
test "@src() returns a struct containing 0-terminated string slices" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const src = testFnForSrc();
|
const src = testFnForSrc();
|
||||||
try std.testing.expect([:0]const u8 == @TypeOf(src.file));
|
try std.testing.expect([:0]const u8 == @TypeOf(src.file));
|
||||||
|
|
@ -101,6 +104,8 @@ test "Peer type resolution with string literals and unknown length u8 pointers"
|
||||||
}
|
}
|
||||||
|
|
||||||
test "including the sentinel when dereferencing a string literal" {
|
test "including the sentinel when dereferencing a string literal" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var var_str = "abc";
|
var var_str = "abc";
|
||||||
const var_derefed = var_str[0 .. var_str.len + 1].*;
|
const var_derefed = var_str[0 .. var_str.len + 1].*;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -293,6 +293,7 @@ const Val = struct {
|
||||||
test "struct point to self" {
|
test "struct point to self" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var root: Node = undefined;
|
var root: Node = undefined;
|
||||||
root.val.x = 1;
|
root.val.x = 1;
|
||||||
|
|
@ -336,6 +337,7 @@ fn testReturnEmptyStructFromFn() EmptyStruct2 {
|
||||||
|
|
||||||
test "pass slice of empty struct to fn" {
|
test "pass slice of empty struct to fn" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try expect(testPassSliceOfEmptyStructToFn(&[_]EmptyStruct2{EmptyStruct2{}}) == 1);
|
try expect(testPassSliceOfEmptyStructToFn(&[_]EmptyStruct2{EmptyStruct2{}}) == 1);
|
||||||
}
|
}
|
||||||
|
|
@ -347,6 +349,7 @@ test "self-referencing struct via array member" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const T = struct {
|
const T = struct {
|
||||||
children: [1]*@This(),
|
children: [1]*@This(),
|
||||||
|
|
@ -370,6 +373,7 @@ const EmptyStruct = struct {
|
||||||
test "align 1 field before self referential align 8 field as slice return type" {
|
test "align 1 field before self referential align 8 field as slice return type" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const result = alloc(Expr);
|
const result = alloc(Expr);
|
||||||
try expect(result.len == 0);
|
try expect(result.len == 0);
|
||||||
|
|
@ -416,12 +420,12 @@ const Foo96Bits = packed struct {
|
||||||
|
|
||||||
test "packed struct 24bits" {
|
test "packed struct 24bits" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.cpu.arch.isWasm()) return error.SkipZigTest; // TODO
|
if (builtin.cpu.arch.isWasm()) return error.SkipZigTest; // TODO
|
||||||
if (builtin.cpu.arch.isArm()) return error.SkipZigTest; // TODO
|
if (builtin.cpu.arch.isArm()) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
|
|
||||||
comptime {
|
comptime {
|
||||||
std.debug.assert(@sizeOf(Foo24Bits) == @sizeOf(u24));
|
std.debug.assert(@sizeOf(Foo24Bits) == @sizeOf(u24));
|
||||||
|
|
@ -956,6 +960,7 @@ test "comptime struct field" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "tuple element initialized with fn call" {
|
test "tuple element initialized with fn call" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
@ -974,6 +979,7 @@ test "tuple element initialized with fn call" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "struct with union field" {
|
test "struct with union field" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
@ -1045,6 +1051,7 @@ test "packed struct with undefined initializers" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "for loop over pointers to struct, getting field from struct pointer" {
|
test "for loop over pointers to struct, getting field from struct pointer" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
|
|
@ -1362,6 +1369,7 @@ test "fieldParentPtr of a zero-bit field" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "struct field has a pointer to an aligned version of itself" {
|
test "struct field has a pointer to an aligned version of itself" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
const E = struct {
|
const E = struct {
|
||||||
|
|
@ -1459,6 +1467,7 @@ test "function pointer in struct returns the struct" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "no dependency loop on optional field wrapped in generic function" {
|
test "no dependency loop on optional field wrapped in generic function" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
|
|
@ -1538,6 +1547,8 @@ test "struct fields get automatically reordered" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "directly initiating tuple like struct" {
|
test "directly initiating tuple like struct" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const a = struct { u8 }{8};
|
const a = struct { u8 }{8};
|
||||||
try expect(a[0] == 8);
|
try expect(a[0] == 8);
|
||||||
}
|
}
|
||||||
|
|
@ -1699,6 +1710,8 @@ test "runtime side-effects in comptime-known struct init" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "pointer to struct initialized through reference to anonymous initializer provides result types" {
|
test "pointer to struct initialized through reference to anonymous initializer provides result types" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct { a: u8, b: u16, c: *const anyopaque };
|
const S = struct { a: u8, b: u16, c: *const anyopaque };
|
||||||
var my_u16: u16 = 0xABCD;
|
var my_u16: u16 = 0xABCD;
|
||||||
_ = &my_u16;
|
_ = &my_u16;
|
||||||
|
|
@ -1756,6 +1769,8 @@ test "initializer uses own size" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "initializer takes a pointer to a variable inside its struct" {
|
test "initializer takes a pointer to a variable inside its struct" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const namespace = struct {
|
const namespace = struct {
|
||||||
const S = struct {
|
const S = struct {
|
||||||
s: *S = &S.instance,
|
s: *S = &S.instance,
|
||||||
|
|
@ -1774,6 +1789,8 @@ test "initializer takes a pointer to a variable inside its struct" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "circular dependency through pointer field of a struct" {
|
test "circular dependency through pointer field of a struct" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
const StructInner = extern struct {
|
const StructInner = extern struct {
|
||||||
outer: StructOuter = std.mem.zeroes(StructOuter),
|
outer: StructOuter = std.mem.zeroes(StructOuter),
|
||||||
|
|
@ -1895,6 +1912,7 @@ test "runtime call in nested initializer" {
|
||||||
if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const Holder = struct {
|
const Holder = struct {
|
||||||
array: []const u8,
|
array: []const u8,
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ const builtin = @import("builtin");
|
||||||
test "struct contains null pointer which contains original struct" {
|
test "struct contains null pointer which contains original struct" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var x: ?*NodeLineComment = null;
|
var x: ?*NodeLineComment = null;
|
||||||
_ = &x;
|
_ = &x;
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ const NodeAligned = struct {
|
||||||
|
|
||||||
test "struct contains slice of itself" {
|
test "struct contains slice of itself" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var other_nodes = [_]Node{
|
var other_nodes = [_]Node{
|
||||||
Node{
|
Node{
|
||||||
|
|
@ -53,6 +54,7 @@ test "struct contains slice of itself" {
|
||||||
test "struct contains aligned slice of itself" {
|
test "struct contains aligned slice of itself" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var other_nodes = [_]NodeAligned{
|
var other_nodes = [_]NodeAligned{
|
||||||
NodeAligned{
|
NodeAligned{
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,12 @@ const maxInt = std.math.maxInt;
|
||||||
|
|
||||||
test "switch with numbers" {
|
test "switch with numbers" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testSwitchWithNumbers(13);
|
try testSwitchWithNumbers(13);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn testSwitchWithNumbers(x: u32) !void {
|
fn testSwitchWithNumbers(x: u32) !void {
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
|
|
||||||
|
|
||||||
const result = switch (x) {
|
const result = switch (x) {
|
||||||
1, 2, 3, 4...8 => false,
|
1, 2, 3, 4...8 => false,
|
||||||
13 => true,
|
13 => true,
|
||||||
|
|
@ -323,14 +322,13 @@ fn testSwitchEnumPtrCapture() !void {
|
||||||
|
|
||||||
test "switch handles all cases of number" {
|
test "switch handles all cases of number" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testSwitchHandleAllCases();
|
try testSwitchHandleAllCases();
|
||||||
try comptime testSwitchHandleAllCases();
|
try comptime testSwitchHandleAllCases();
|
||||||
}
|
}
|
||||||
|
|
||||||
fn testSwitchHandleAllCases() !void {
|
fn testSwitchHandleAllCases() !void {
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
|
|
||||||
|
|
||||||
try expect(testSwitchHandleAllCasesExhaustive(0) == 3);
|
try expect(testSwitchHandleAllCasesExhaustive(0) == 3);
|
||||||
try expect(testSwitchHandleAllCasesExhaustive(1) == 2);
|
try expect(testSwitchHandleAllCasesExhaustive(1) == 2);
|
||||||
try expect(testSwitchHandleAllCasesExhaustive(2) == 1);
|
try expect(testSwitchHandleAllCasesExhaustive(2) == 1);
|
||||||
|
|
@ -694,6 +692,7 @@ test "switch prong pointer capture alignment" {
|
||||||
test "switch on pointer type" {
|
test "switch on pointer type" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
const X = struct {
|
const X = struct {
|
||||||
|
|
@ -742,6 +741,7 @@ test "switch capture copies its payload" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -832,6 +832,8 @@ test "comptime inline switch" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "switch capture peer type resolution" {
|
test "switch capture peer type resolution" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const U = union(enum) {
|
const U = union(enum) {
|
||||||
a: u32,
|
a: u32,
|
||||||
b: u64,
|
b: u64,
|
||||||
|
|
@ -867,8 +869,6 @@ test "switch capture peer type resolution for in-memory coercible payloads" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "switch pointer capture peer type resolution" {
|
test "switch pointer capture peer type resolution" {
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
|
|
||||||
const T1 = c_int;
|
const T1 = c_int;
|
||||||
const T2 = @Type(@typeInfo(T1));
|
const T2 = @Type(@typeInfo(T1));
|
||||||
|
|
||||||
|
|
@ -989,8 +989,6 @@ test "prong with inline call to unreachable" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "block error return trace index is reset between prongs" {
|
test "block error return trace index is reset between prongs" {
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
|
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn returnError() error{TestFailed} {
|
fn returnError() error{TestFailed} {
|
||||||
return error.TestFailed;
|
return error.TestFailed;
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ test "pointer to thread local array" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const s = "Hello world";
|
const s = "Hello world";
|
||||||
@memcpy(buffer[0..s.len], s);
|
@memcpy(buffer[0..s.len], s);
|
||||||
|
|
@ -38,6 +39,7 @@ test "reference a global threadlocal variable" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
_ = nrfx_uart_rx(&g_uart0);
|
_ = nrfx_uart_rx(&g_uart0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,7 @@ test "truncate on vectors" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,6 @@ test "'return try' of empty error set in function returning non-error" {
|
||||||
if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
|
|
|
||||||
|
|
@ -131,6 +131,7 @@ test "tuple initializer for var" {
|
||||||
test "array-like initializer for tuple types" {
|
test "array-like initializer for tuple types" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const T = @Type(.{
|
const T = @Type(.{
|
||||||
.@"struct" = .{
|
.@"struct" = .{
|
||||||
|
|
@ -219,6 +220,7 @@ test "fieldParentPtr of tuple" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var x: u32 = 0;
|
var x: u32 = 0;
|
||||||
_ = &x;
|
_ = &x;
|
||||||
|
|
@ -231,6 +233,7 @@ test "fieldParentPtr of anon struct" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var x: u32 = 0;
|
var x: u32 = 0;
|
||||||
_ = &x;
|
_ = &x;
|
||||||
|
|
@ -280,6 +283,7 @@ test "tuple in tuple passed to generic function" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn pair(x: f32, y: f32) std.meta.Tuple(&.{ f32, f32 }) {
|
fn pair(x: f32, y: f32) std.meta.Tuple(&.{ f32, f32 }) {
|
||||||
|
|
@ -299,6 +303,7 @@ test "coerce tuple to tuple" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const T = std.meta.Tuple(&.{u8});
|
const T = std.meta.Tuple(&.{u8});
|
||||||
const S = struct {
|
const S = struct {
|
||||||
|
|
@ -313,6 +318,7 @@ test "tuple type with void field" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const T = std.meta.Tuple(&[_]type{void});
|
const T = std.meta.Tuple(&[_]type{void});
|
||||||
const x = T{{}};
|
const x = T{{}};
|
||||||
|
|
@ -349,6 +355,7 @@ test "zero sized struct in tuple handled correctly" {
|
||||||
test "tuple type with void field and a runtime field" {
|
test "tuple type with void field and a runtime field" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const T = std.meta.Tuple(&[_]type{ usize, void });
|
const T = std.meta.Tuple(&[_]type{ usize, void });
|
||||||
var t: T = .{ 5, {} };
|
var t: T = .{ 5, {} };
|
||||||
|
|
@ -376,6 +383,7 @@ test "tuple initialized with a runtime known value" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const E = union(enum) { e: []const u8 };
|
const E = union(enum) { e: []const u8 };
|
||||||
const W = union(enum) { w: E };
|
const W = union(enum) { w: E };
|
||||||
|
|
@ -391,6 +399,7 @@ test "tuple of struct concatenation and coercion to array" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const StructWithDefault = struct { value: f32 = 42 };
|
const StructWithDefault = struct { value: f32 = 42 };
|
||||||
const SomeStruct = struct { array: [4]StructWithDefault };
|
const SomeStruct = struct { array: [4]StructWithDefault };
|
||||||
|
|
@ -405,6 +414,7 @@ test "nested runtime conditionals in tuple initializer" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var data: u8 = 0;
|
var data: u8 = 0;
|
||||||
_ = &data;
|
_ = &data;
|
||||||
|
|
@ -440,6 +450,7 @@ test "tuple pointer is indexable" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct { u32, bool };
|
const S = struct { u32, bool };
|
||||||
|
|
||||||
|
|
@ -498,6 +509,7 @@ test "tuple with runtime value coerced into a slice with a sentinel" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn f(a: [:null]const ?u8) !void {
|
fn f(a: [:null]const ?u8) !void {
|
||||||
|
|
@ -569,8 +581,8 @@ test "comptime fields in tuple can be initialized" {
|
||||||
test "empty struct in tuple" {
|
test "empty struct in tuple" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const T = struct { struct {} };
|
const T = struct { struct {} };
|
||||||
const info = @typeInfo(T);
|
const info = @typeInfo(T);
|
||||||
|
|
@ -582,8 +594,8 @@ test "empty struct in tuple" {
|
||||||
test "empty union in tuple" {
|
test "empty union in tuple" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const T = struct { union {} };
|
const T = struct { union {} };
|
||||||
const info = @typeInfo(T);
|
const info = @typeInfo(T);
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ const expectEqualStrings = testing.expectEqualStrings;
|
||||||
test "tuple declaration type info" {
|
test "tuple declaration type info" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
{
|
{
|
||||||
const T = struct { comptime u32 = 1, []const u8 };
|
const T = struct { comptime u32 = 1, []const u8 };
|
||||||
|
|
@ -35,6 +36,7 @@ test "tuple declaration type info" {
|
||||||
test "tuple declaration usage" {
|
test "tuple declaration usage" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const T = struct { u32, []const u8 };
|
const T = struct { u32, []const u8 };
|
||||||
var t: T = .{ 1, "foo" };
|
var t: T = .{ 1, "foo" };
|
||||||
|
|
|
||||||
|
|
@ -203,6 +203,7 @@ test "Type.Opaque" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const Opaque = @Type(.{
|
const Opaque = @Type(.{
|
||||||
.@"opaque" = .{
|
.@"opaque" = .{
|
||||||
|
|
@ -260,6 +261,7 @@ test "Type.Struct" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const A = @Type(@typeInfo(struct { x: u8, y: u32 }));
|
const A = @Type(@typeInfo(struct { x: u8, y: u32 }));
|
||||||
const infoA = @typeInfo(A).@"struct";
|
const infoA = @typeInfo(A).@"struct";
|
||||||
|
|
@ -347,6 +349,7 @@ test "Type.Struct" {
|
||||||
test "Type.Enum" {
|
test "Type.Enum" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const Foo = @Type(.{
|
const Foo = @Type(.{
|
||||||
.@"enum" = .{
|
.@"enum" = .{
|
||||||
|
|
|
||||||
|
|
@ -161,6 +161,7 @@ test "type info: error set, error union info, anyerror" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testErrorSet();
|
try testErrorSet();
|
||||||
try comptime testErrorSet();
|
try comptime testErrorSet();
|
||||||
|
|
@ -192,6 +193,7 @@ test "type info: error set single value" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const TestSet = error.One;
|
const TestSet = error.One;
|
||||||
|
|
||||||
|
|
@ -205,6 +207,7 @@ test "type info: error set merged" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const TestSet = error{ One, Two } || error{Three};
|
const TestSet = error{ One, Two } || error{Three};
|
||||||
|
|
||||||
|
|
@ -220,6 +223,7 @@ test "type info: enum info" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testEnum();
|
try testEnum();
|
||||||
try comptime testEnum();
|
try comptime testEnum();
|
||||||
|
|
@ -282,6 +286,7 @@ fn testUnion() !void {
|
||||||
|
|
||||||
test "type info: struct info" {
|
test "type info: struct info" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testStruct();
|
try testStruct();
|
||||||
try comptime testStruct();
|
try comptime testStruct();
|
||||||
|
|
@ -551,6 +556,7 @@ test "type info for async frames" {
|
||||||
|
|
||||||
test "Declarations are returned in declaration order" {
|
test "Declarations are returned in declaration order" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
pub const a = 1;
|
pub const a = 1;
|
||||||
|
|
@ -572,6 +578,8 @@ test "Struct.is_tuple for anon list literal" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "Struct.is_tuple for anon struct literal" {
|
test "Struct.is_tuple for anon struct literal" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
const info = @typeInfo(@TypeOf(.{ .a = 0 }));
|
const info = @typeInfo(@TypeOf(.{ .a = 0 }));
|
||||||
|
|
@ -586,6 +594,8 @@ test "StructField.is_comptime" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "typeInfo resolves usingnamespace declarations" {
|
test "typeInfo resolves usingnamespace declarations" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const A = struct {
|
const A = struct {
|
||||||
pub const f1 = 42;
|
pub const f1 = 42;
|
||||||
};
|
};
|
||||||
|
|
@ -611,6 +621,7 @@ test "value from struct @typeInfo default_value_ptr can be loaded at comptime" {
|
||||||
test "@typeInfo decls and usingnamespace" {
|
test "@typeInfo decls and usingnamespace" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const A = struct {
|
const A = struct {
|
||||||
pub const x = 5;
|
pub const x = 5;
|
||||||
|
|
@ -651,6 +662,8 @@ test "type info of tuple of string literal default value" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "@typeInfo only contains pub decls" {
|
test "@typeInfo only contains pub decls" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const other = struct {
|
const other = struct {
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,7 @@ test "basic" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try expectEqualStrings("i64", @typeName(i64));
|
try expectEqualStrings("i64", @typeName(i64));
|
||||||
try expectEqualStrings("*usize", @typeName(*usize));
|
try expectEqualStrings("*usize", @typeName(*usize));
|
||||||
|
|
@ -237,6 +238,7 @@ test "comptime parameters not converted to anytype in function type" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const T = fn (comptime fn (comptime type) void, void) void;
|
const T = fn (comptime fn (comptime type) void, void) void;
|
||||||
try expectEqualStrings("fn (comptime fn (comptime type) void, void) void", @typeName(T));
|
try expectEqualStrings("fn (comptime fn (comptime type) void, void) void", @typeName(T));
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,7 @@ test "assign undefined to struct with method" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "type name of undefined" {
|
test "type name of undefined" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
|
||||||
const x = undefined;
|
const x = undefined;
|
||||||
|
|
@ -91,6 +92,7 @@ test "reslice of undefined global var slice" {
|
||||||
if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var stack_buf: [100]u8 = [_]u8{0} ** 100;
|
var stack_buf: [100]u8 = [_]u8{0} ** 100;
|
||||||
buf = &stack_buf;
|
buf = &stack_buf;
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ test "basic unions with floats" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var foo = FooWithFloats{ .int = 1 };
|
var foo = FooWithFloats{ .int = 1 };
|
||||||
try expect(foo.int == 1);
|
try expect(foo.int == 1);
|
||||||
|
|
@ -43,6 +44,7 @@ test "basic unions" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var foo = Foo{ .int = 1 };
|
var foo = Foo{ .int = 1 };
|
||||||
try expect(foo.int == 1);
|
try expect(foo.int == 1);
|
||||||
|
|
@ -62,6 +64,7 @@ test "init union with runtime value" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var foo: Foo = undefined;
|
var foo: Foo = undefined;
|
||||||
|
|
||||||
|
|
@ -100,6 +103,7 @@ const FooExtern = extern union {
|
||||||
test "basic extern unions" {
|
test "basic extern unions" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var foo = FooExtern{ .int = 1 };
|
var foo = FooExtern{ .int = 1 };
|
||||||
try expect(foo.int == 1);
|
try expect(foo.int == 1);
|
||||||
|
|
@ -210,6 +214,7 @@ test "union with specified enum tag" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try doTest();
|
try doTest();
|
||||||
try comptime doTest();
|
try comptime doTest();
|
||||||
|
|
@ -261,6 +266,7 @@ test "comparison between union and enum literal" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testComparison();
|
try testComparison();
|
||||||
try comptime testComparison();
|
try comptime testComparison();
|
||||||
|
|
@ -334,6 +340,7 @@ test "constant packed union" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try testConstPackedUnion(&[_]PackThis{PackThis{ .StringLiteral = 1 }});
|
try testConstPackedUnion(&[_]PackThis{PackThis{ .StringLiteral = 1 }});
|
||||||
}
|
}
|
||||||
|
|
@ -483,6 +490,7 @@ test "initialize global array of union" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
glbl_array[1] = FooUnion{ .U1 = 2 };
|
glbl_array[1] = FooUnion{ .U1 = 2 };
|
||||||
glbl_array[0] = FooUnion{ .U0 = 1 };
|
glbl_array[0] = FooUnion{ .U0 = 1 };
|
||||||
|
|
@ -522,6 +530,7 @@ test "union initializer generates padding only if needed" {
|
||||||
test "runtime tag name with single field" {
|
test "runtime tag name with single field" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const U = union(enum) {
|
const U = union(enum) {
|
||||||
A: i32,
|
A: i32,
|
||||||
|
|
@ -599,6 +608,7 @@ test "tagged union as return value" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
switch (returnAnInt(13)) {
|
switch (returnAnInt(13)) {
|
||||||
TaggedFoo.One => |value| try expect(value == 13),
|
TaggedFoo.One => |value| try expect(value == 13),
|
||||||
|
|
@ -642,6 +652,7 @@ test "union(enum(u32)) with specified and unspecified tag values" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
comptime assert(Tag(Tag(MultipleChoice2)) == u32);
|
comptime assert(Tag(Tag(MultipleChoice2)) == u32);
|
||||||
try testEnumWithSpecifiedAndUnspecifiedTagValues(MultipleChoice2{ .C = 123 });
|
try testEnumWithSpecifiedAndUnspecifiedTagValues(MultipleChoice2{ .C = 123 });
|
||||||
|
|
@ -928,6 +939,7 @@ test "anonymous union literal syntax" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
const Number = union {
|
const Number = union {
|
||||||
|
|
@ -1048,7 +1060,6 @@ test "@unionInit on union with tag but no fields" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
const Type = enum(u8) { no_op = 105 };
|
const Type = enum(u8) { no_op = 105 };
|
||||||
|
|
@ -1098,6 +1109,7 @@ test "global variable struct contains union initialized to non-most-aligned fiel
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const T = struct {
|
const T = struct {
|
||||||
const U = union(enum) {
|
const U = union(enum) {
|
||||||
|
|
@ -1330,6 +1342,7 @@ test "union field ptr - zero sized payload" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const U = union {
|
const U = union {
|
||||||
foo: void,
|
foo: void,
|
||||||
|
|
@ -1344,6 +1357,7 @@ test "union field ptr - zero sized field" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const U = union {
|
const U = union {
|
||||||
foo: void,
|
foo: void,
|
||||||
|
|
@ -1998,6 +2012,7 @@ test "store of comptime reinterpreted memory to packed union" {
|
||||||
test "union field is a pointer to an aligned version of itself" {
|
test "union field is a pointer to an aligned version of itself" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const E = union {
|
const E = union {
|
||||||
next: *align(1) @This(),
|
next: *align(1) @This(),
|
||||||
|
|
@ -2010,6 +2025,7 @@ test "union field is a pointer to an aligned version of itself" {
|
||||||
|
|
||||||
test "pass register-sized field as non-register-sized union" {
|
test "pass register-sized field as non-register-sized union" {
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn taggedUnion(u: union(enum) { x: usize, y: [2]usize }) !void {
|
fn taggedUnion(u: union(enum) { x: usize, y: [2]usize }) !void {
|
||||||
|
|
@ -2057,6 +2073,7 @@ test "circular dependency through pointer field of a union" {
|
||||||
|
|
||||||
test "pass nested union with rls" {
|
test "pass nested union with rls" {
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const Union = union(enum) {
|
const Union = union(enum) {
|
||||||
a: u32,
|
a: u32,
|
||||||
|
|
@ -2105,6 +2122,7 @@ test "copied union field doesn't alias source" {
|
||||||
if (builtin.zig_backend == .stage2_arm) 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_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const U = union(enum) {
|
const U = union(enum) {
|
||||||
array: [10]u32,
|
array: [10]u32,
|
||||||
|
|
@ -2305,6 +2323,8 @@ test "extern union @FieldType" {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "assign global tagged union" {
|
test "assign global tagged union" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const U = union(enum) {
|
const U = union(enum) {
|
||||||
a: u16,
|
a: u16,
|
||||||
b: u32,
|
b: u32,
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ const C = struct {
|
||||||
|
|
||||||
test "basic usingnamespace" {
|
test "basic usingnamespace" {
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try std.testing.expect(C.B == bool);
|
try std.testing.expect(C.B == bool);
|
||||||
}
|
}
|
||||||
|
|
@ -24,6 +25,7 @@ fn Foo(comptime T: type) type {
|
||||||
|
|
||||||
test "usingnamespace inside a generic struct" {
|
test "usingnamespace inside a generic struct" {
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const std2 = Foo(std);
|
const std2 = Foo(std);
|
||||||
const testing2 = Foo(std.testing);
|
const testing2 = Foo(std.testing);
|
||||||
|
|
@ -37,6 +39,7 @@ usingnamespace struct {
|
||||||
|
|
||||||
test "usingnamespace does not redeclare an imported variable" {
|
test "usingnamespace does not redeclare an imported variable" {
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try comptime std.testing.expect(@This().foo == 42);
|
try comptime std.testing.expect(@This().foo == 42);
|
||||||
}
|
}
|
||||||
|
|
@ -46,6 +49,7 @@ test "usingnamespace omits mixing in private functions" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try expect(@This().privateFunction());
|
try expect(@This().privateFunction());
|
||||||
try expect(!@This().printText());
|
try expect(!@This().printText());
|
||||||
|
|
@ -56,6 +60,7 @@ fn privateFunction() bool {
|
||||||
|
|
||||||
test {
|
test {
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
_ = @import("usingnamespace/import_segregation.zig");
|
_ = @import("usingnamespace/import_segregation.zig");
|
||||||
}
|
}
|
||||||
|
|
@ -65,6 +70,7 @@ test "two files usingnamespace import each other" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
try expect(@This().ok());
|
try expect(@This().ok());
|
||||||
}
|
}
|
||||||
|
|
@ -73,6 +79,7 @@ test {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const AA = struct {
|
const AA = struct {
|
||||||
x: i32,
|
x: i32,
|
||||||
|
|
@ -102,6 +109,7 @@ const Mixin = struct {
|
||||||
|
|
||||||
test "container member access usingnamespace decls" {
|
test "container member access usingnamespace decls" {
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var foo = Bar{};
|
var foo = Bar{};
|
||||||
foo.two();
|
foo.two();
|
||||||
|
|
|
||||||
|
|
@ -192,8 +192,8 @@ test "variadic functions" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.os.tag != .macos and builtin.cpu.arch.isAARCH64()) {
|
if (builtin.os.tag != .macos and builtin.cpu.arch.isAARCH64()) {
|
||||||
// https://github.com/ziglang/zig/issues/14096
|
// https://github.com/ziglang/zig/issues/14096
|
||||||
return error.SkipZigTest;
|
return error.SkipZigTest;
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ test "implicit cast vector to array - bool" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -29,6 +30,7 @@ test "vector wrap operators" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and
|
if (builtin.zig_backend == .stage2_x86_64 and
|
||||||
!comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
|
!comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
|
||||||
|
|
||||||
|
|
@ -54,6 +56,7 @@ test "vector bin compares with mem.eql" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -79,6 +82,7 @@ test "vector int operators" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -149,6 +153,7 @@ test "vector bit operators" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -169,6 +174,7 @@ test "implicit cast vector to array" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -187,6 +193,7 @@ test "array to vector" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -245,6 +252,7 @@ test "array to vector with element type coercion" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
|
||||||
|
|
@ -287,7 +295,6 @@ test "tuple to vector" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -311,6 +318,7 @@ test "vector casts of sizes not divisible by 8" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -350,6 +358,7 @@ test "vector @splat" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
if (builtin.zig_backend == .stage2_llvm and
|
if (builtin.zig_backend == .stage2_llvm and
|
||||||
builtin.os.tag == .macos)
|
builtin.os.tag == .macos)
|
||||||
|
|
@ -511,6 +520,7 @@ test "vector comparison operators" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -557,6 +567,7 @@ test "vector division operators" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTestDiv(comptime T: type, x: @Vector(4, T), y: @Vector(4, T)) !void {
|
fn doTheTestDiv(comptime T: type, x: @Vector(4, T), y: @Vector(4, T)) !void {
|
||||||
|
|
@ -644,6 +655,7 @@ test "vector division operators" {
|
||||||
|
|
||||||
test "vector bitwise not operator" {
|
test "vector bitwise not operator" {
|
||||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
|
|
@ -681,6 +693,7 @@ test "vector shift operators" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTestShift(x: anytype, y: anytype) !void {
|
fn doTheTestShift(x: anytype, y: anytype) !void {
|
||||||
|
|
@ -1038,6 +1051,7 @@ test "multiplication-assignment operator with an array operand" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -1059,6 +1073,7 @@ test "@addWithOverflow" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.cpu.arch == .aarch64_be and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
|
if (builtin.cpu.arch == .aarch64_be and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
|
|
@ -1109,6 +1124,7 @@ test "@subWithOverflow" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.cpu.arch == .aarch64_be and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
|
if (builtin.cpu.arch == .aarch64_be and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
|
|
@ -1211,6 +1227,7 @@ test "loading the second vector from a slice of vectors" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
@setRuntimeSafety(false);
|
@setRuntimeSafety(false);
|
||||||
var small_bases = [2]@Vector(2, u8){
|
var small_bases = [2]@Vector(2, u8){
|
||||||
|
|
@ -1227,6 +1244,7 @@ test "array of vectors is copied" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const Vec3 = @Vector(3, i32);
|
const Vec3 = @Vector(3, i32);
|
||||||
var points = [_]Vec3{
|
var points = [_]Vec3{
|
||||||
|
|
@ -1392,6 +1410,7 @@ test "store to vector in slice" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
|
||||||
|
|
||||||
var v = [_]@Vector(3, f32){
|
var v = [_]@Vector(3, f32){
|
||||||
|
|
@ -1508,6 +1527,7 @@ test "bitcast to vector with different child type" {
|
||||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const S = struct {
|
const S = struct {
|
||||||
fn doTheTest() !void {
|
fn doTheTest() !void {
|
||||||
|
|
@ -1565,6 +1585,7 @@ test "@reduce on bool vector" {
|
||||||
test "bitcast vector to array of smaller vectors" {
|
test "bitcast vector to array of smaller vectors" {
|
||||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
const u8x32 = @Vector(32, u8);
|
const u8x32 = @Vector(32, u8);
|
||||||
const u8x64 = @Vector(64, u8);
|
const u8x64 = @Vector(64, u8);
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ test "compare void with void compile time known" {
|
||||||
test "iterate over a void slice" {
|
test "iterate over a void slice" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var j: usize = 0;
|
var j: usize = 0;
|
||||||
for (times(10), 0..) |_, i| {
|
for (times(10), 0..) |_, i| {
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,8 @@ fn staticWhileLoop2() i32 {
|
||||||
}
|
}
|
||||||
|
|
||||||
test "while with continue expression" {
|
test "while with continue expression" {
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
var sum: i32 = 0;
|
var sum: i32 = 0;
|
||||||
{
|
{
|
||||||
var i: i32 = 0;
|
var i: i32 = 0;
|
||||||
|
|
@ -158,6 +160,7 @@ test "while with optional as condition with else" {
|
||||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
numbers_left = 10;
|
numbers_left = 10;
|
||||||
var sum: i32 = 0;
|
var sum: i32 = 0;
|
||||||
|
|
@ -175,6 +178,7 @@ test "while with optional as condition with else" {
|
||||||
test "while with error union condition" {
|
test "while with error union condition" {
|
||||||
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
|
||||||
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
||||||
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
||||||
|
|
||||||
numbers_left = 10;
|
numbers_left = 10;
|
||||||
var sum: i32 = 0;
|
var sum: i32 = 0;
|
||||||
|
|
|
||||||
|
|
@ -140,6 +140,15 @@ const test_targets = blk: {
|
||||||
.use_llvm = false,
|
.use_llvm = false,
|
||||||
.use_lld = false,
|
.use_lld = false,
|
||||||
},
|
},
|
||||||
|
.{
|
||||||
|
.target = std.Target.Query.parse(.{
|
||||||
|
.arch_os_abi = "spirv64-vulkan",
|
||||||
|
.cpu_features = "vulkan_v1_2+int8+int16+int64+float16+float64",
|
||||||
|
}) catch unreachable,
|
||||||
|
.use_llvm = false,
|
||||||
|
.use_lld = false,
|
||||||
|
.skip_modules = &.{ "c-import", "universal-libc", "std" },
|
||||||
|
},
|
||||||
// https://github.com/ziglang/zig/issues/13623
|
// https://github.com/ziglang/zig/issues/13623
|
||||||
//.{
|
//.{
|
||||||
// .target = .{
|
// .target = .{
|
||||||
|
|
@ -1583,6 +1592,10 @@ pub fn addModuleTests(b: *std.Build, options: ModuleTestOptions) *Step {
|
||||||
run.setName(b.fmt("run test {s}", .{qualified_name}));
|
run.setName(b.fmt("run test {s}", .{qualified_name}));
|
||||||
|
|
||||||
step.dependOn(&run.step);
|
step.dependOn(&run.step);
|
||||||
|
} else if (target.cpu.arch.isSpirV()) {
|
||||||
|
// Don't run spirv binaries
|
||||||
|
_ = these_tests.getEmittedBin();
|
||||||
|
step.dependOn(&these_tests.step);
|
||||||
} else {
|
} else {
|
||||||
const run = b.addRunArtifact(these_tests);
|
const run = b.addRunArtifact(these_tests);
|
||||||
run.skip_foreign_checks = true;
|
run.skip_foreign_checks = true;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue