| author | |
| committer | |
| log | ad5770eba40e0cc425c7a1eab4d37c6f9788d670 |
| tree | e849a479217b69c9698ac35782e4f270ce3bbfca |
| parent | d5803441cd0c06d3fb7f11f5cb447c20e0d62d52 |
* Identify the ones that are passing and stop skipping them.
* Flatten out the main behavior.zig file and have each individual test
disable itself if it is not passing.17 files changed, 328 insertions(+), 73 deletions(-)
test/behavior.zig+37-41| ... | ... | @@ -13,6 +13,7 @@ test { |
| 13 | 13 | _ = @import("behavior/byval_arg_var.zig"); |
| 14 | 14 | _ = @import("behavior/bool.zig"); |
| 15 | 15 | _ = @import("behavior/bugs/394.zig"); |
| 16 | _ = @import("behavior/bugs/421.zig"); | |
| 16 | 17 | _ = @import("behavior/bugs/624.zig"); |
| 17 | 18 | _ = @import("behavior/bugs/655.zig"); |
| 18 | 19 | _ = @import("behavior/bugs/656.zig"); |
| ... | ... | @@ -34,8 +35,10 @@ test { |
| 34 | 35 | _ = @import("behavior/bugs/1607.zig"); |
| 35 | 36 | _ = @import("behavior/bugs/1735.zig"); |
| 36 | 37 | _ = @import("behavior/bugs/1741.zig"); |
| 38 | _ = @import("behavior/bugs/1851.zig"); | |
| 37 | 39 | _ = @import("behavior/bugs/1914.zig"); |
| 38 | 40 | _ = @import("behavior/bugs/2006.zig"); |
| 41 | _ = @import("behavior/bugs/2114.zig"); | |
| 39 | 42 | _ = @import("behavior/bugs/2346.zig"); |
| 40 | 43 | _ = @import("behavior/bugs/2578.zig"); |
| 41 | 44 | _ = @import("behavior/bugs/2692.zig"); |
| ... | ... | @@ -47,6 +50,7 @@ test { |
| 47 | 50 | _ = @import("behavior/bugs/3384.zig"); |
| 48 | 51 | _ = @import("behavior/bugs/3586.zig"); |
| 49 | 52 | _ = @import("behavior/bugs/3742.zig"); |
| 53 | _ = @import("behavior/bugs/3779.zig"); | |
| 50 | 54 | _ = @import("behavior/bugs/4328.zig"); |
| 51 | 55 | _ = @import("behavior/bugs/4560.zig"); |
| 52 | 56 | _ = @import("behavior/bugs/4769_a.zig"); |
| ... | ... | @@ -61,9 +65,11 @@ test { |
| 61 | 65 | _ = @import("behavior/bugs/7003.zig"); |
| 62 | 66 | _ = @import("behavior/bugs/7047.zig"); |
| 63 | 67 | _ = @import("behavior/bugs/7250.zig"); |
| 64 | _ = @import("behavior/bugs/11100.zig"); | |
| 68 | _ = @import("behavior/bugs/9584.zig"); | |
| 69 | _ = @import("behavior/bugs/10147.zig"); | |
| 65 | 70 | _ = @import("behavior/bugs/10970.zig"); |
| 66 | 71 | _ = @import("behavior/bugs/11046.zig"); |
| 72 | _ = @import("behavior/bugs/11100.zig"); | |
| 67 | 73 | _ = @import("behavior/bugs/11139.zig"); |
| 68 | 74 | _ = @import("behavior/bugs/11159.zig"); |
| 69 | 75 | _ = @import("behavior/bugs/11162.zig"); |
| ... | ... | @@ -73,11 +79,13 @@ test { |
| 73 | 79 | _ = @import("behavior/bugs/11213.zig"); |
| 74 | 80 | _ = @import("behavior/call.zig"); |
| 75 | 81 | _ = @import("behavior/cast.zig"); |
| 82 | _ = @import("behavior/cast_int.zig"); | |
| 76 | 83 | _ = @import("behavior/comptime_memory.zig"); |
| 77 | 84 | _ = @import("behavior/const_slice_child.zig"); |
| 78 | 85 | _ = @import("behavior/defer.zig"); |
| 79 | 86 | _ = @import("behavior/enum.zig"); |
| 80 | 87 | _ = @import("behavior/error.zig"); |
| 88 | _ = @import("behavior/eval.zig"); | |
| 81 | 89 | _ = @import("behavior/field_parent_ptr.zig"); |
| 82 | 90 | _ = @import("behavior/floatop.zig"); |
| 83 | 91 | _ = @import("behavior/fn_delegation.zig"); |
| ... | ... | @@ -90,10 +98,12 @@ test { |
| 90 | 98 | _ = @import("behavior/if.zig"); |
| 91 | 99 | _ = @import("behavior/import.zig"); |
| 92 | 100 | _ = @import("behavior/incomplete_struct_param_tld.zig"); |
| 101 | _ = @import("behavior/int128.zig"); | |
| 93 | 102 | _ = @import("behavior/int_div.zig"); |
| 94 | 103 | _ = @import("behavior/inttoptr.zig"); |
| 95 | 104 | _ = @import("behavior/ir_block_deps.zig"); |
| 96 | 105 | _ = @import("behavior/math.zig"); |
| 106 | _ = @import("behavior/maximum_minimum.zig"); | |
| 97 | 107 | _ = @import("behavior/member_func.zig"); |
| 98 | 108 | _ = @import("behavior/merge_error_sets.zig"); |
| 99 | 109 | _ = @import("behavior/muladd.zig"); |
| ... | ... | @@ -101,21 +111,25 @@ test { |
| 101 | 111 | _ = @import("behavior/null.zig"); |
| 102 | 112 | _ = @import("behavior/optional.zig"); |
| 103 | 113 | _ = @import("behavior/pointers.zig"); |
| 114 | _ = @import("behavior/popcount.zig"); | |
| 104 | 115 | _ = @import("behavior/prefetch.zig"); |
| 105 | 116 | _ = @import("behavior/ptrcast.zig"); |
| 106 | 117 | _ = @import("behavior/pub_enum.zig"); |
| 107 | 118 | _ = @import("behavior/ref_var_in_if_after_if_2nd_switch_prong.zig"); |
| 108 | 119 | _ = @import("behavior/reflection.zig"); |
| 120 | _ = @import("behavior/saturating_arithmetic.zig"); | |
| 121 | _ = @import("behavior/shuffle.zig"); | |
| 109 | 122 | _ = @import("behavior/sizeof_and_typeof.zig"); |
| 110 | _ = @import("behavior/slice_sentinel_comptime.zig"); | |
| 111 | 123 | _ = @import("behavior/slice.zig"); |
| 124 | _ = @import("behavior/slice_sentinel_comptime.zig"); | |
| 112 | 125 | _ = @import("behavior/src.zig"); |
| 113 | _ = @import("behavior/struct_contains_null_ptr_itself.zig"); | |
| 114 | 126 | _ = @import("behavior/struct.zig"); |
| 127 | _ = @import("behavior/struct_contains_null_ptr_itself.zig"); | |
| 128 | _ = @import("behavior/switch.zig"); | |
| 115 | 129 | _ = @import("behavior/switch_prong_err_enum.zig"); |
| 116 | 130 | _ = @import("behavior/switch_prong_implicit_cast.zig"); |
| 117 | _ = @import("behavior/switch.zig"); | |
| 118 | 131 | _ = @import("behavior/this.zig"); |
| 132 | _ = @import("behavior/translate_c_macros.zig"); | |
| 119 | 133 | _ = @import("behavior/truncate.zig"); |
| 120 | 134 | _ = @import("behavior/try.zig"); |
| 121 | 135 | _ = @import("behavior/tuple.zig"); |
| ... | ... | @@ -125,11 +139,13 @@ test { |
| 125 | 139 | _ = @import("behavior/undefined.zig"); |
| 126 | 140 | _ = @import("behavior/underscore.zig"); |
| 127 | 141 | _ = @import("behavior/union.zig"); |
| 142 | _ = @import("behavior/union_with_members.zig"); | |
| 128 | 143 | _ = @import("behavior/usingnamespace.zig"); |
| 129 | 144 | _ = @import("behavior/var_args.zig"); |
| 130 | 145 | _ = @import("behavior/vector.zig"); |
| 131 | 146 | _ = @import("behavior/void.zig"); |
| 132 | 147 | _ = @import("behavior/while.zig"); |
| 148 | _ = @import("behavior/widening.zig"); | |
| 133 | 149 | |
| 134 | 150 | if (builtin.stage2_arch == .wasm32) { |
| 135 | 151 | _ = @import("behavior/wasm.zig"); |
| ... | ... | @@ -142,46 +158,26 @@ test { |
| 142 | 158 | if (builtin.zig_backend != .stage2_arm and |
| 143 | 159 | builtin.zig_backend != .stage2_x86_64 and |
| 144 | 160 | builtin.zig_backend != .stage2_aarch64 and |
| 145 | builtin.zig_backend != .stage2_wasm) | |
| 161 | builtin.zig_backend != .stage2_wasm and | |
| 162 | builtin.zig_backend != .stage2_c) | |
| 146 | 163 | { |
| 147 | // Tests that pass for stage1, llvm backend, C backend | |
| 148 | _ = @import("behavior/bugs/421.zig"); | |
| 149 | _ = @import("behavior/bugs/3779.zig"); | |
| 150 | _ = @import("behavior/bugs/9584.zig"); | |
| 151 | _ = @import("behavior/cast_int.zig"); | |
| 152 | _ = @import("behavior/eval.zig"); | |
| 164 | _ = @import("behavior/export.zig"); | |
| 153 | 165 | _ = @import("behavior/export_self_referential_type_info.zig"); |
| 154 | _ = @import("behavior/int128.zig"); | |
| 155 | _ = @import("behavior/popcount.zig"); | |
| 156 | _ = @import("behavior/translate_c_macros.zig"); | |
| 157 | _ = @import("behavior/union_with_members.zig"); | |
| 158 | ||
| 159 | if (builtin.zig_backend != .stage2_c) { | |
| 160 | // Tests that pass for stage1 and the llvm backend. | |
| 161 | _ = @import("behavior/export.zig"); | |
| 162 | _ = @import("behavior/maximum_minimum.zig"); | |
| 163 | _ = @import("behavior/saturating_arithmetic.zig"); | |
| 164 | _ = @import("behavior/widening.zig"); | |
| 165 | _ = @import("behavior/bugs/2114.zig"); | |
| 166 | _ = @import("behavior/bugs/10147.zig"); | |
| 167 | _ = @import("behavior/shuffle.zig"); | |
| 166 | } | |
| 168 | 167 | |
| 169 | if (builtin.zig_backend == .stage1) { | |
| 170 | // Tests that only pass for the stage1 backend. | |
| 171 | if (builtin.os.tag != .wasi) { | |
| 172 | _ = @import("behavior/asm.zig"); | |
| 173 | _ = @import("behavior/async_fn.zig"); | |
| 174 | } | |
| 175 | _ = @import("behavior/await_struct.zig"); | |
| 176 | _ = @import("behavior/bugs/529.zig"); | |
| 177 | _ = @import("behavior/bugs/920.zig"); | |
| 178 | _ = @import("behavior/bugs/1120.zig"); | |
| 179 | _ = @import("behavior/bugs/1851.zig"); | |
| 180 | _ = @import("behavior/bugs/6781.zig"); | |
| 181 | _ = @import("behavior/bugs/7027.zig"); | |
| 182 | _ = @import("behavior/select.zig"); | |
| 183 | _ = @import("behavior/struct_contains_slice_of_itself.zig"); | |
| 184 | } | |
| 168 | if (builtin.zig_backend == .stage1) { | |
| 169 | // TODO get these tests passing with stage2 | |
| 170 | if (builtin.os.tag != .wasi) { | |
| 171 | _ = @import("behavior/asm.zig"); | |
| 172 | _ = @import("behavior/async_fn.zig"); | |
| 185 | 173 | } |
| 174 | _ = @import("behavior/await_struct.zig"); | |
| 175 | _ = @import("behavior/bugs/529.zig"); | |
| 176 | _ = @import("behavior/bugs/920.zig"); | |
| 177 | _ = @import("behavior/bugs/1120.zig"); | |
| 178 | _ = @import("behavior/bugs/6781.zig"); | |
| 179 | _ = @import("behavior/bugs/7027.zig"); | |
| 180 | _ = @import("behavior/select.zig"); | |
| 181 | _ = @import("behavior/struct_contains_slice_of_itself.zig"); | |
| 186 | 182 | } |
| 187 | 183 | } |
test/behavior/bugs/10147.zig+7| ... | ... | @@ -1,6 +1,13 @@ |
| 1 | const builtin = @import("builtin"); | |
| 1 | 2 | const std = @import("std"); |
| 2 | 3 | |
| 3 | 4 | test "uses correct LLVM builtin" { |
| 5 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 6 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 7 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 8 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 9 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 10 | ||
| 4 | 11 | var x: u32 = 0x1; |
| 5 | 12 | var y: @Vector(4, u32) = [_]u32{ 0x1, 0x1, 0x1, 0x1 }; |
| 6 | 13 | // The stage1 compiler used to call the same builtin function for both |
test/behavior/bugs/1851.zig+15| ... | ... | @@ -1,7 +1,22 @@ |
| 1 | const builtin = @import("builtin"); | |
| 1 | 2 | const std = @import("std"); |
| 2 | 3 | const expect = std.testing.expect; |
| 3 | 4 | |
| 4 | 5 | test "allocation and looping over 3-byte integer" { |
| 6 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 7 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 8 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 9 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 10 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 11 | ||
| 12 | if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .macos) { | |
| 13 | return error.SkipZigTest; // TODO | |
| 14 | } | |
| 15 | ||
| 16 | if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .wasm32) { | |
| 17 | return error.SkipZigTest; // TODO | |
| 18 | } | |
| 19 | ||
| 5 | 20 | try expect(@sizeOf(u24) == 4); |
| 6 | 21 | try expect(@sizeOf([1]u24) == 4); |
| 7 | 22 | try expect(@alignOf(u24) == 4); |
test/behavior/bugs/2114.zig+7| ... | ... | @@ -1,3 +1,4 @@ |
| 1 | const builtin = @import("builtin"); | |
| 1 | 2 | const std = @import("std"); |
| 2 | 3 | const expect = std.testing.expect; |
| 3 | 4 | const math = std.math; |
| ... | ... | @@ -7,6 +8,12 @@ fn ctz(x: anytype) usize { |
| 7 | 8 | } |
| 8 | 9 | |
| 9 | 10 | test "fixed" { |
| 11 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 12 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 13 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 14 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 15 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 16 | ||
| 10 | 17 | try testCtz(); |
| 11 | 18 | comptime try testCtz(); |
| 12 | 19 | } |
test/behavior/bugs/3779.zig+15| ... | ... | @@ -7,6 +7,9 @@ const ptr_tag_name: [*:0]const u8 = tag_name; |
| 7 | 7 | |
| 8 | 8 | test "@tagName() returns a string literal" { |
| 9 | 9 | if (builtin.zig_backend == .stage1) return error.SkipZigTest; // stage1 gets the type wrong |
| 10 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 11 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 12 | ||
| 10 | 13 | try std.testing.expect(*const [13:0]u8 == @TypeOf(tag_name)); |
| 11 | 14 | try std.testing.expect(std.mem.eql(u8, "TestEnumValue", tag_name)); |
| 12 | 15 | try std.testing.expect(std.mem.eql(u8, "TestEnumValue", ptr_tag_name[0..tag_name.len])); |
| ... | ... | @@ -18,6 +21,9 @@ const ptr_error_name: [*:0]const u8 = error_name; |
| 18 | 21 | |
| 19 | 22 | test "@errorName() returns a string literal" { |
| 20 | 23 | if (builtin.zig_backend == .stage1) return error.SkipZigTest; // stage1 gets the type wrong |
| 24 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 25 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 26 | ||
| 21 | 27 | try std.testing.expect(*const [13:0]u8 == @TypeOf(error_name)); |
| 22 | 28 | try std.testing.expect(std.mem.eql(u8, "TestErrorCode", error_name)); |
| 23 | 29 | try std.testing.expect(std.mem.eql(u8, "TestErrorCode", ptr_error_name[0..error_name.len])); |
| ... | ... | @@ -29,6 +35,9 @@ const ptr_type_name: [*:0]const u8 = type_name; |
| 29 | 35 | |
| 30 | 36 | test "@typeName() returns a string literal" { |
| 31 | 37 | if (builtin.zig_backend == .stage1) return error.SkipZigTest; // stage1 gets the type wrong |
| 38 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 39 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 40 | ||
| 32 | 41 | try std.testing.expect(*const [type_name.len:0]u8 == @TypeOf(type_name)); |
| 33 | 42 | try std.testing.expect(std.mem.eql(u8, "behavior.bugs.3779.TestType", type_name)); |
| 34 | 43 | try std.testing.expect(std.mem.eql(u8, "behavior.bugs.3779.TestType", ptr_type_name[0..type_name.len])); |
| ... | ... | @@ -39,6 +48,9 @@ const ptr_actual_contents: [*:0]const u8 = actual_contents; |
| 39 | 48 | const expected_contents = "hello zig\n"; |
| 40 | 49 | |
| 41 | 50 | test "@embedFile() returns a string literal" { |
| 51 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 52 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 53 | ||
| 42 | 54 | try std.testing.expect(*const [expected_contents.len:0]u8 == @TypeOf(actual_contents)); |
| 43 | 55 | try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents)); |
| 44 | 56 | try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents)); |
| ... | ... | @@ -50,6 +62,9 @@ fn testFnForSrc() std.builtin.SourceLocation { |
| 50 | 62 | } |
| 51 | 63 | |
| 52 | 64 | test "@src() returns a struct containing 0-terminated string slices" { |
| 65 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 66 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 67 | ||
| 53 | 68 | const src = testFnForSrc(); |
| 54 | 69 | try std.testing.expect([:0]const u8 == @TypeOf(src.file)); |
| 55 | 70 | try std.testing.expect(std.mem.endsWith(u8, src.file, "3779.zig")); |
test/behavior/bugs/421.zig+6| ... | ... | @@ -1,6 +1,12 @@ |
| 1 | const builtin = @import("builtin"); | |
| 1 | 2 | const expect = @import("std").testing.expect; |
| 2 | 3 | |
| 3 | 4 | test "bitCast to array" { |
| 5 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 6 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 7 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 8 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 9 | ||
| 4 | 10 | comptime try testBitCastArray(); |
| 5 | 11 | try testBitCastArray(); |
| 6 | 12 | } |
test/behavior/bugs/9584.zig+8-1| ... | ... | @@ -1,3 +1,4 @@ |
| 1 | const builtin = @import("builtin"); | |
| 1 | 2 | const std = @import("std"); |
| 2 | 3 | |
| 3 | 4 | const A = packed struct { |
| ... | ... | @@ -41,7 +42,13 @@ pub fn b(x: *X) !void { |
| 41 | 42 | try a(0, 1, 2, 3, 4, x.x.a, x.x.b); |
| 42 | 43 | } |
| 43 | 44 | |
| 44 | test "bug 9584" { | |
| 45 | test { | |
| 46 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 47 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 48 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 49 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 50 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 51 | ||
| 45 | 52 | var flags = A{ |
| 46 | 53 | .a = false, |
| 47 | 54 | .b = true, |
test/behavior/cast_int.zig+7| ... | ... | @@ -1,8 +1,15 @@ |
| 1 | const builtin = @import("builtin"); | |
| 1 | 2 | const std = @import("std"); |
| 2 | 3 | const expect = std.testing.expect; |
| 3 | 4 | const maxInt = std.math.maxInt; |
| 4 | 5 | |
| 5 | 6 | test "@intCast i32 to u7" { |
| 7 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 8 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 9 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 10 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 11 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 12 | ||
| 6 | 13 | var x: u128 = maxInt(u128); |
| 7 | 14 | var y: i32 = 120; |
| 8 | 15 | var z = x >> @intCast(u7, y); |
test/behavior/eval.zig+59-3| ... | ... | @@ -17,6 +17,9 @@ fn unwrapAndAddOne(blah: ?i32) i32 { |
| 17 | 17 | } |
| 18 | 18 | const should_be_1235 = unwrapAndAddOne(1234); |
| 19 | 19 | test "static add one" { |
| 20 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 21 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 22 | ||
| 20 | 23 | try expect(should_be_1235 == 1235); |
| 21 | 24 | } |
| 22 | 25 | |
| ... | ... | @@ -65,6 +68,9 @@ fn constExprEvalOnSingleExprBlocksFn(x: i32, b: bool) i32 { |
| 65 | 68 | } |
| 66 | 69 | |
| 67 | 70 | test "constant expressions" { |
| 71 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 72 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 73 | ||
| 68 | 74 | var array: [array_size]u8 = undefined; |
| 69 | 75 | try expect(@sizeOf(@TypeOf(array)) == 20); |
| 70 | 76 | } |
| ... | ... | @@ -83,6 +89,9 @@ fn letsTryToCompareBools(a: bool, b: bool) bool { |
| 83 | 89 | return max(bool, a, b); |
| 84 | 90 | } |
| 85 | 91 | test "inlined block and runtime block phi" { |
| 92 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 93 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 94 | ||
| 86 | 95 | try expect(letsTryToCompareBools(true, true)); |
| 87 | 96 | try expect(letsTryToCompareBools(true, false)); |
| 88 | 97 | try expect(letsTryToCompareBools(false, true)); |
| ... | ... | @@ -127,6 +136,10 @@ test "pointer to type" { |
| 127 | 136 | } |
| 128 | 137 | |
| 129 | 138 | test "a type constructed in a global expression" { |
| 139 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 140 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 141 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 142 | ||
| 130 | 143 | var l: List = undefined; |
| 131 | 144 | l.array[0] = 10; |
| 132 | 145 | l.array[1] = 11; |
| ... | ... | @@ -220,6 +233,8 @@ const vertices = [_]Vertex{ |
| 220 | 233 | }; |
| 221 | 234 | |
| 222 | 235 | test "statically initialized list" { |
| 236 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 237 | ||
| 223 | 238 | try expect(static_point_list[0].x == 1); |
| 224 | 239 | try expect(static_point_list[0].y == 2); |
| 225 | 240 | try expect(static_point_list[1].x == 3); |
| ... | ... | @@ -323,6 +338,9 @@ fn doesAlotT(comptime T: type, value: usize) T { |
| 323 | 338 | } |
| 324 | 339 | |
| 325 | 340 | test "@setEvalBranchQuota at same scope as generic function call" { |
| 341 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 342 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 343 | ||
| 326 | 344 | try expect(doesAlotT(u32, 2) == 2); |
| 327 | 345 | } |
| 328 | 346 | |
| ... | ... | @@ -371,6 +389,9 @@ test "return 0 from function that has u0 return type" { |
| 371 | 389 | } |
| 372 | 390 | |
| 373 | 391 | test "statically initialized struct" { |
| 392 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 393 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 394 | ||
| 374 | 395 | st_init_str_foo.x += 1; |
| 375 | 396 | try expect(st_init_str_foo.x == 14); |
| 376 | 397 | } |
| ... | ... | @@ -384,6 +405,8 @@ var st_init_str_foo = StInitStrFoo{ |
| 384 | 405 | }; |
| 385 | 406 | |
| 386 | 407 | test "inline for with same type but different values" { |
| 408 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 409 | ||
| 387 | 410 | var res: usize = 0; |
| 388 | 411 | inline for ([_]type{ [2]u8, [1]u8, [2]u8 }) |T| { |
| 389 | 412 | var a: T = undefined; |
| ... | ... | @@ -416,7 +439,9 @@ fn copyWithPartialInline(s: []u32, b: []u8) void { |
| 416 | 439 | } |
| 417 | 440 | |
| 418 | 441 | test "binary math operator in partially inlined function" { |
| 419 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; | |
| 442 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 443 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 444 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 420 | 445 | |
| 421 | 446 | var s: [4]u32 = undefined; |
| 422 | 447 | var b: [16]u8 = undefined; |
| ... | ... | @@ -432,6 +457,12 @@ test "binary math operator in partially inlined function" { |
| 432 | 457 | } |
| 433 | 458 | |
| 434 | 459 | test "comptime shl" { |
| 460 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 461 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 462 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 463 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 464 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 465 | ||
| 435 | 466 | var a: u128 = 3; |
| 436 | 467 | var b: u7 = 63; |
| 437 | 468 | var c: u128 = 3 << 63; |
| ... | ... | @@ -456,6 +487,9 @@ test "comptime bitwise operators" { |
| 456 | 487 | } |
| 457 | 488 | |
| 458 | 489 | test "comptime shlWithOverflow" { |
| 490 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 491 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 492 | ||
| 459 | 493 | const ct_shifted: u64 = comptime amt: { |
| 460 | 494 | var amt = @as(u64, 0); |
| 461 | 495 | _ = @shlWithOverflow(u64, ~@as(u64, 0), 16, &amt); |
| ... | ... | @@ -472,6 +506,9 @@ test "comptime shlWithOverflow" { |
| 472 | 506 | } |
| 473 | 507 | |
| 474 | 508 | test "const ptr to variable data changes at runtime" { |
| 509 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 510 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 511 | ||
| 475 | 512 | try expect(foo_ref.name[0] == 'a'); |
| 476 | 513 | foo_ref.name = "b"; |
| 477 | 514 | try expect(foo_ref.name[0] == 'b'); |
| ... | ... | @@ -485,6 +522,12 @@ var foo_contents = Foo{ .name = "a" }; |
| 485 | 522 | const foo_ref = &foo_contents; |
| 486 | 523 | |
| 487 | 524 | test "runtime 128 bit integer division" { |
| 525 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 526 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 527 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 528 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 529 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 530 | ||
| 488 | 531 | var a: u128 = 152313999999999991610955792383; |
| 489 | 532 | var b: u128 = 10000000000000000000; |
| 490 | 533 | var c = a / b; |
| ... | ... | @@ -492,12 +535,17 @@ test "runtime 128 bit integer division" { |
| 492 | 535 | } |
| 493 | 536 | |
| 494 | 537 | test "@tagName of @typeInfo" { |
| 538 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 539 | ||
| 495 | 540 | const str = @tagName(@typeInfo(u8)); |
| 496 | 541 | try expect(std.mem.eql(u8, str, "Int")); |
| 497 | 542 | } |
| 498 | 543 | |
| 499 | 544 | test "static eval list init" { |
| 500 | 545 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 546 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 547 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 548 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 501 | 549 | |
| 502 | 550 | try expect(static_vec3.data[2] == 1.0); |
| 503 | 551 | try expect(vec3(0.0, 0.0, 3.0).data[2] == 3.0); |
| ... | ... | @@ -513,6 +561,8 @@ pub fn vec3(x: f32, y: f32, z: f32) Vec3 { |
| 513 | 561 | } |
| 514 | 562 | |
| 515 | 563 | test "inlined loop has array literal with elided runtime scope on first iteration but not second iteration" { |
| 564 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 565 | ||
| 516 | 566 | var runtime = [1]i32{3}; |
| 517 | 567 | comptime var i: usize = 0; |
| 518 | 568 | inline while (i < 2) : (i += 1) { |
| ... | ... | @@ -548,6 +598,8 @@ const bound_fn = simple_struct.method; |
| 548 | 598 | |
| 549 | 599 | test "ptr to local array argument at comptime" { |
| 550 | 600 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 601 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 602 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 551 | 603 | |
| 552 | 604 | comptime { |
| 553 | 605 | var bytes: [10]u8 = undefined; |
| ... | ... | @@ -583,6 +635,9 @@ fn testCompTimeUIntComparisons(x: u32) void { |
| 583 | 635 | const hi1 = "hi"; |
| 584 | 636 | const hi2 = hi1; |
| 585 | 637 | test "const global shares pointer with other same one" { |
| 638 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 639 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 640 | ||
| 586 | 641 | try assertEqualPtrs(&hi1[0], &hi2[0]); |
| 587 | 642 | comptime try expect(&hi1[0] == &hi2[0]); |
| 588 | 643 | } |
| ... | ... | @@ -681,8 +736,6 @@ fn loopNTimes(comptime n: usize) void { |
| 681 | 736 | } |
| 682 | 737 | |
| 683 | 738 | test "variable inside inline loop that has different types on different iterations" { |
| 684 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 685 | ||
| 686 | 739 | try testVarInsideInlineLoop(.{ true, @as(u32, 42) }); |
| 687 | 740 | } |
| 688 | 741 | |
| ... | ... | @@ -742,6 +795,9 @@ test "comptime assign int to optional int" { |
| 742 | 795 | } |
| 743 | 796 | |
| 744 | 797 | test "two comptime calls with array default initialized to undefined" { |
| 798 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 799 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 800 | ||
| 745 | 801 | const S = struct { |
| 746 | 802 | const CrossTarget = struct { |
| 747 | 803 | dynamic_linker: DynamicLinker = DynamicLinker{}, |
test/behavior/int128.zig+20| ... | ... | @@ -5,6 +5,11 @@ const minInt = std.math.minInt; |
| 5 | 5 | const builtin = @import("builtin"); |
| 6 | 6 | |
| 7 | 7 | test "uint128" { |
| 8 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 9 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 10 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 11 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 12 | ||
| 8 | 13 | var buff: u128 = maxInt(u128); |
| 9 | 14 | try expect(buff == maxInt(u128)); |
| 10 | 15 | |
| ... | ... | @@ -19,6 +24,11 @@ test "uint128" { |
| 19 | 24 | } |
| 20 | 25 | |
| 21 | 26 | test "undefined 128 bit int" { |
| 27 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 28 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 29 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 30 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 31 | ||
| 22 | 32 | @setRuntimeSafety(true); |
| 23 | 33 | |
| 24 | 34 | // TODO implement @setRuntimeSafety in stage2 |
| ... | ... | @@ -32,6 +42,11 @@ test "undefined 128 bit int" { |
| 32 | 42 | } |
| 33 | 43 | |
| 34 | 44 | test "int128" { |
| 45 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 46 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 47 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 48 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 49 | ||
| 35 | 50 | var buff: i128 = -1; |
| 36 | 51 | try expect(buff < 0 and (buff + 1) == 0); |
| 37 | 52 | try expect(@intCast(i8, buff) == @as(i8, -1)); |
| ... | ... | @@ -44,6 +59,11 @@ test "int128" { |
| 44 | 59 | } |
| 45 | 60 | |
| 46 | 61 | test "truncate int128" { |
| 62 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 63 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 64 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 65 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 66 | ||
| 47 | 67 | var buff: u128 = maxInt(u128); |
| 48 | 68 | try expect(@truncate(u64, buff) == maxInt(u64)); |
| 49 | 69 | } |
test/behavior/maximum_minimum.zig+24-13| ... | ... | @@ -3,26 +3,31 @@ const builtin = @import("builtin"); |
| 3 | 3 | const mem = std.mem; |
| 4 | 4 | const expect = std.testing.expect; |
| 5 | 5 | const expectEqual = std.testing.expectEqual; |
| 6 | const Vector = std.meta.Vector; | |
| 7 | 6 | |
| 8 | 7 | test "@maximum" { |
| 8 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 9 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 10 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 11 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 12 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 13 | ||
| 9 | 14 | const S = struct { |
| 10 | 15 | fn doTheTest() !void { |
| 11 | 16 | try expect(@as(i32, 10) == @maximum(@as(i32, -3), @as(i32, 10))); |
| 12 | 17 | try expect(@as(f32, 3.2) == @maximum(@as(f32, 3.2), @as(f32, 0.68))); |
| 13 | 18 | |
| 14 | var a: Vector(4, i32) = [4]i32{ 2147483647, -2, 30, 40 }; | |
| 15 | var b: Vector(4, i32) = [4]i32{ 1, 2147483647, 3, 4 }; | |
| 19 | var a: @Vector(4, i32) = [4]i32{ 2147483647, -2, 30, 40 }; | |
| 20 | var b: @Vector(4, i32) = [4]i32{ 1, 2147483647, 3, 4 }; | |
| 16 | 21 | var x = @maximum(a, b); |
| 17 | 22 | try expect(mem.eql(i32, &@as([4]i32, x), &[4]i32{ 2147483647, 2147483647, 30, 40 })); |
| 18 | 23 | |
| 19 | var c: Vector(4, f32) = [4]f32{ 0, 0.4, -2.4, 7.8 }; | |
| 20 | var d: Vector(4, f32) = [4]f32{ -0.23, 0.42, -0.64, 0.9 }; | |
| 24 | var c: @Vector(4, f32) = [4]f32{ 0, 0.4, -2.4, 7.8 }; | |
| 25 | var d: @Vector(4, f32) = [4]f32{ -0.23, 0.42, -0.64, 0.9 }; | |
| 21 | 26 | var y = @maximum(c, d); |
| 22 | 27 | try expect(mem.eql(f32, &@as([4]f32, y), &[4]f32{ 0, 0.42, -0.64, 7.8 })); |
| 23 | 28 | |
| 24 | var e: Vector(2, f32) = [2]f32{ 0, std.math.qnan_f32 }; | |
| 25 | var f: Vector(2, f32) = [2]f32{ std.math.qnan_f32, 0 }; | |
| 29 | var e: @Vector(2, f32) = [2]f32{ 0, std.math.qnan_f32 }; | |
| 30 | var f: @Vector(2, f32) = [2]f32{ std.math.qnan_f32, 0 }; | |
| 26 | 31 | var z = @maximum(e, f); |
| 27 | 32 | try expect(mem.eql(f32, &@as([2]f32, z), &[2]f32{ 0, 0 })); |
| 28 | 33 | } |
| ... | ... | @@ -32,23 +37,29 @@ test "@maximum" { |
| 32 | 37 | } |
| 33 | 38 | |
| 34 | 39 | test "@minimum" { |
| 40 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 41 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 42 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 43 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 44 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 45 | ||
| 35 | 46 | const S = struct { |
| 36 | 47 | fn doTheTest() !void { |
| 37 | 48 | try expect(@as(i32, -3) == @minimum(@as(i32, -3), @as(i32, 10))); |
| 38 | 49 | try expect(@as(f32, 0.68) == @minimum(@as(f32, 3.2), @as(f32, 0.68))); |
| 39 | 50 | |
| 40 | var a: Vector(4, i32) = [4]i32{ 2147483647, -2, 30, 40 }; | |
| 41 | var b: Vector(4, i32) = [4]i32{ 1, 2147483647, 3, 4 }; | |
| 51 | var a: @Vector(4, i32) = [4]i32{ 2147483647, -2, 30, 40 }; | |
| 52 | var b: @Vector(4, i32) = [4]i32{ 1, 2147483647, 3, 4 }; | |
| 42 | 53 | var x = @minimum(a, b); |
| 43 | 54 | try expect(mem.eql(i32, &@as([4]i32, x), &[4]i32{ 1, -2, 3, 4 })); |
| 44 | 55 | |
| 45 | var c: Vector(4, f32) = [4]f32{ 0, 0.4, -2.4, 7.8 }; | |
| 46 | var d: Vector(4, f32) = [4]f32{ -0.23, 0.42, -0.64, 0.9 }; | |
| 56 | var c: @Vector(4, f32) = [4]f32{ 0, 0.4, -2.4, 7.8 }; | |
| 57 | var d: @Vector(4, f32) = [4]f32{ -0.23, 0.42, -0.64, 0.9 }; | |
| 47 | 58 | var y = @minimum(c, d); |
| 48 | 59 | try expect(mem.eql(f32, &@as([4]f32, y), &[4]f32{ -0.23, 0.4, -2.4, 0.9 })); |
| 49 | 60 | |
| 50 | var e: Vector(2, f32) = [2]f32{ 0, std.math.qnan_f32 }; | |
| 51 | var f: Vector(2, f32) = [2]f32{ std.math.qnan_f32, 0 }; | |
| 61 | var e: @Vector(2, f32) = [2]f32{ 0, std.math.qnan_f32 }; | |
| 62 | var f: @Vector(2, f32) = [2]f32{ std.math.qnan_f32, 0 }; | |
| 52 | 63 | var z = @maximum(e, f); |
| 53 | 64 | try expect(mem.eql(f32, &@as([2]f32, z), &[2]f32{ 0, 0 })); |
| 54 | 65 | } |
test/behavior/popcount.zig+9| ... | ... | @@ -4,6 +4,11 @@ const expect = std.testing.expect; |
| 4 | 4 | const expectEqual = std.testing.expectEqual; |
| 5 | 5 | |
| 6 | 6 | test "@popCount integers" { |
| 7 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 8 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 9 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 10 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 11 | ||
| 7 | 12 | comptime try testPopCountIntegers(); |
| 8 | 13 | try testPopCountIntegers(); |
| 9 | 14 | } |
| ... | ... | @@ -51,6 +56,10 @@ fn testPopCountIntegers() !void { |
| 51 | 56 | |
| 52 | 57 | test "@popCount vectors" { |
| 53 | 58 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 59 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 60 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 61 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 62 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 54 | 63 | |
| 55 | 64 | comptime try testPopCountVectors(); |
| 56 | 65 | try testPopCountVectors(); |
test/behavior/saturating_arithmetic.zig+38-2| ... | ... | @@ -5,6 +5,12 @@ const maxInt = std.math.maxInt; |
| 5 | 5 | const expect = std.testing.expect; |
| 6 | 6 | |
| 7 | 7 | test "saturating add" { |
| 8 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 9 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 10 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 11 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 12 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 13 | ||
| 8 | 14 | const S = struct { |
| 9 | 15 | fn doTheTest() !void { |
| 10 | 16 | try testSatAdd(i8, -3, 10, 7); |
| ... | ... | @@ -49,6 +55,12 @@ test "saturating add" { |
| 49 | 55 | } |
| 50 | 56 | |
| 51 | 57 | test "saturating subtraction" { |
| 58 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 59 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 60 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 61 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 62 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 63 | ||
| 52 | 64 | const S = struct { |
| 53 | 65 | fn doTheTest() !void { |
| 54 | 66 | try testSatSub(i8, -3, 10, -13); |
| ... | ... | @@ -92,8 +104,20 @@ test "saturating subtraction" { |
| 92 | 104 | } |
| 93 | 105 | |
| 94 | 106 | test "saturating multiplication" { |
| 95 | // TODO: once #9660 has been solved, remove this line | |
| 96 | if (builtin.cpu.arch == .wasm32) return error.SkipZigTest; | |
| 107 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 108 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 109 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 110 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 111 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 112 | ||
| 113 | if (builtin.zig_backend == .stage1 and builtin.cpu.arch == .wasm32) { | |
| 114 | // https://github.com/ziglang/zig/issues/9660 | |
| 115 | return error.SkipZigTest; | |
| 116 | } | |
| 117 | if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .wasm32) { | |
| 118 | // https://github.com/ziglang/zig/issues/9660 | |
| 119 | return error.SkipZigTest; | |
| 120 | } | |
| 97 | 121 | |
| 98 | 122 | const S = struct { |
| 99 | 123 | fn doTheTest() !void { |
| ... | ... | @@ -129,6 +153,12 @@ test "saturating multiplication" { |
| 129 | 153 | } |
| 130 | 154 | |
| 131 | 155 | test "saturating shift-left" { |
| 156 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 157 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 158 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 159 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 160 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 161 | ||
| 132 | 162 | const S = struct { |
| 133 | 163 | fn doTheTest() !void { |
| 134 | 164 | try testSatShl(i8, 1, 2, 4); |
| ... | ... | @@ -163,6 +193,12 @@ test "saturating shift-left" { |
| 163 | 193 | } |
| 164 | 194 | |
| 165 | 195 | test "saturating shl uses the LHS type" { |
| 196 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 197 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 198 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 199 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 200 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 201 | ||
| 166 | 202 | const lhs_const: u8 = 1; |
| 167 | 203 | var lhs_var: u8 = 1; |
| 168 | 204 |
test/behavior/shuffle.zig+31-13| ... | ... | @@ -2,13 +2,18 @@ const std = @import("std"); |
| 2 | 2 | const builtin = @import("builtin"); |
| 3 | 3 | const mem = std.mem; |
| 4 | 4 | const expect = std.testing.expect; |
| 5 | const Vector = std.meta.Vector; | |
| 6 | 5 | |
| 7 | 6 | test "@shuffle int" { |
| 7 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 8 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 9 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 10 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 11 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 12 | ||
| 8 | 13 | const S = struct { |
| 9 | 14 | fn doTheTest() !void { |
| 10 | var v: Vector(4, i32) = [4]i32{ 2147483647, -2, 30, 40 }; | |
| 11 | var x: Vector(4, i32) = [4]i32{ 1, 2147483647, 3, 4 }; | |
| 15 | var v: @Vector(4, i32) = [4]i32{ 2147483647, -2, 30, 40 }; | |
| 16 | var x: @Vector(4, i32) = [4]i32{ 1, 2147483647, 3, 4 }; | |
| 12 | 17 | const mask = [4]i32{ 0, ~@as(i32, 2), 3, ~@as(i32, 3) }; |
| 13 | 18 | var res = @shuffle(i32, v, x, mask); |
| 14 | 19 | try expect(mem.eql(i32, &@as([4]i32, res), &[4]i32{ 2147483647, 3, 40, 4 })); |
| ... | ... | @@ -23,13 +28,13 @@ test "@shuffle int" { |
| 23 | 28 | try expect(mem.eql(i32, &@as([4]i32, res), &[4]i32{ 40, -2, 30, 2147483647 })); |
| 24 | 29 | |
| 25 | 30 | // Upcasting of b |
| 26 | var v2: Vector(2, i32) = [2]i32{ 2147483647, undefined }; | |
| 31 | var v2: @Vector(2, i32) = [2]i32{ 2147483647, undefined }; | |
| 27 | 32 | const mask3 = [4]i32{ ~@as(i32, 0), 2, ~@as(i32, 0), 3 }; |
| 28 | 33 | res = @shuffle(i32, x, v2, mask3); |
| 29 | 34 | try expect(mem.eql(i32, &@as([4]i32, res), &[4]i32{ 2147483647, 3, 2147483647, 4 })); |
| 30 | 35 | |
| 31 | 36 | // Upcasting of a |
| 32 | var v3: Vector(2, i32) = [2]i32{ 2147483647, -2 }; | |
| 37 | var v3: @Vector(2, i32) = [2]i32{ 2147483647, -2 }; | |
| 33 | 38 | const mask4 = [4]i32{ 0, ~@as(i32, 2), 1, ~@as(i32, 3) }; |
| 34 | 39 | res = @shuffle(i32, v3, x, mask4); |
| 35 | 40 | try expect(mem.eql(i32, &@as([4]i32, res), &[4]i32{ 2147483647, 3, -2, 4 })); |
| ... | ... | @@ -40,10 +45,16 @@ test "@shuffle int" { |
| 40 | 45 | } |
| 41 | 46 | |
| 42 | 47 | test "@shuffle bool" { |
| 48 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 49 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 50 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 51 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 52 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 53 | ||
| 43 | 54 | const S = struct { |
| 44 | 55 | fn doTheTest() !void { |
| 45 | var x: Vector(4, bool) = [4]bool{ false, true, false, true }; | |
| 46 | var v: Vector(2, bool) = [2]bool{ true, false }; | |
| 56 | var x: @Vector(4, bool) = [4]bool{ false, true, false, true }; | |
| 57 | var v: @Vector(2, bool) = [2]bool{ true, false }; | |
| 47 | 58 | const mask = [4]i32{ 0, ~@as(i32, 1), 1, 2 }; |
| 48 | 59 | var res = @shuffle(bool, x, v, mask); |
| 49 | 60 | try expect(mem.eql(bool, &@as([4]bool, res), &[4]bool{ false, false, true, false })); |
| ... | ... | @@ -54,15 +65,22 @@ test "@shuffle bool" { |
| 54 | 65 | } |
| 55 | 66 | |
| 56 | 67 | test "@shuffle bool" { |
| 57 | // TODO re-enable when LLVM codegen is fixed | |
| 58 | // https://github.com/ziglang/zig/issues/3246 | |
| 59 | if (true) return error.SkipZigTest; | |
| 68 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 69 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 70 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 71 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 72 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 73 | ||
| 74 | if (builtin.zig_backend == .stage1 or builtin.zig_backend == .stage2_llvm) { | |
| 75 | // https://github.com/ziglang/zig/issues/3246 | |
| 76 | return error.SkipZigTest; | |
| 77 | } | |
| 60 | 78 | |
| 61 | 79 | const S = struct { |
| 62 | 80 | fn doTheTest() !void { |
| 63 | var x: Vector(3, bool) = [3]bool{ false, true, false }; | |
| 64 | var v: Vector(2, bool) = [2]bool{ true, false }; | |
| 65 | const mask: Vector(4, i32) = [4]i32{ 0, ~@as(i32, 1), 1, 2 }; | |
| 81 | var x: @Vector(3, bool) = [3]bool{ false, true, false }; | |
| 82 | var v: @Vector(2, bool) = [2]bool{ true, false }; | |
| 83 | const mask: @Vector(4, i32) = [4]i32{ 0, ~@as(i32, 1), 1, 2 }; | |
| 66 | 84 | var res = @shuffle(bool, x, v, mask); |
| 67 | 85 | try expect(mem.eql(bool, &@as([4]bool, res), &[4]bool{ false, false, true, false })); |
| 68 | 86 | } |
test/behavior/translate_c_macros.zig+14| ... | ... | @@ -30,6 +30,8 @@ test "initializer list expression" { |
| 30 | 30 | } |
| 31 | 31 | |
| 32 | 32 | test "sizeof in macros" { |
| 33 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 34 | ||
| 33 | 35 | try expect(@as(c_int, @sizeOf(u32)) == h.MY_SIZEOF(u32)); |
| 34 | 36 | try expect(@as(c_int, @sizeOf(u32)) == h.MY_SIZEOF2(u32)); |
| 35 | 37 | } |
| ... | ... | @@ -39,13 +41,21 @@ test "reference to a struct type" { |
| 39 | 41 | } |
| 40 | 42 | |
| 41 | 43 | test "cast negative integer to pointer" { |
| 44 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 45 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 42 | 46 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 47 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 48 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 43 | 49 | |
| 44 | 50 | try expectEqual(@intToPtr(?*anyopaque, @bitCast(usize, @as(isize, -1))), h.MAP_FAILED); |
| 45 | 51 | } |
| 46 | 52 | |
| 47 | 53 | test "casting to union with a macro" { |
| 54 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 55 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 48 | 56 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 57 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 58 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 49 | 59 | |
| 50 | 60 | const l: c_long = 42; |
| 51 | 61 | const d: f64 = 2.0; |
| ... | ... | @@ -58,7 +68,11 @@ test "casting to union with a macro" { |
| 58 | 68 | } |
| 59 | 69 | |
| 60 | 70 | test "nested comma operator" { |
| 71 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 72 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 61 | 73 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 74 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 75 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 62 | 76 | |
| 63 | 77 | try expectEqual(@as(c_int, 3), h.NESTED_COMMA_OPERATOR); |
| 64 | 78 | } |
test/behavior/union_with_members.zig+4| ... | ... | @@ -17,7 +17,11 @@ const ET = union(enum) { |
| 17 | 17 | }; |
| 18 | 18 | |
| 19 | 19 | test "enum with members" { |
| 20 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 21 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 20 | 22 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 23 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 24 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 21 | 25 | |
| 22 | 26 | const a = ET{ .SINT = -42 }; |
| 23 | 27 | const b = ET{ .UINT = 42 }; |
test/behavior/widening.zig+27| ... | ... | @@ -5,6 +5,12 @@ const builtin = @import("builtin"); |
| 5 | 5 | const has_f80_rt = @import("builtin").cpu.arch == .x86_64; |
| 6 | 6 | |
| 7 | 7 | test "integer widening" { |
| 8 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 9 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 10 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 11 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 12 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 13 | ||
| 8 | 14 | var a: u8 = 250; |
| 9 | 15 | var b: u16 = a; |
| 10 | 16 | var c: u32 = b; |
| ... | ... | @@ -15,12 +21,24 @@ test "integer widening" { |
| 15 | 21 | } |
| 16 | 22 | |
| 17 | 23 | test "implicit unsigned integer to signed integer" { |
| 24 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 25 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 26 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 27 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 28 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 29 | ||
| 18 | 30 | var a: u8 = 250; |
| 19 | 31 | var b: i16 = a; |
| 20 | 32 | try expect(b == 250); |
| 21 | 33 | } |
| 22 | 34 | |
| 23 | 35 | test "float widening" { |
| 36 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 37 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 38 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 39 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 40 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 41 | ||
| 24 | 42 | var a: f16 = 12.34; |
| 25 | 43 | var b: f32 = a; |
| 26 | 44 | var c: f64 = b; |
| ... | ... | @@ -35,6 +53,12 @@ test "float widening" { |
| 35 | 53 | } |
| 36 | 54 | |
| 37 | 55 | test "float widening f16 to f128" { |
| 56 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 57 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | |
| 58 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 59 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 60 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | |
| 61 | ||
| 38 | 62 | // TODO https://github.com/ziglang/zig/issues/3282 |
| 39 | 63 | if (builtin.cpu.arch == .aarch64) return error.SkipZigTest; |
| 40 | 64 | if (builtin.cpu.arch == .powerpc64le) return error.SkipZigTest; |
| ... | ... | @@ -45,6 +69,9 @@ test "float widening f16 to f128" { |
| 45 | 69 | } |
| 46 | 70 | |
| 47 | 71 | test "cast small unsigned to larger signed" { |
| 72 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 73 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | |
| 74 | ||
| 48 | 75 | try expect(castSmallUnsignedToLargerSigned1(200) == @as(i16, 200)); |
| 49 | 76 | try expect(castSmallUnsignedToLargerSigned2(9999) == @as(i64, 9999)); |
| 50 | 77 | } |