add tests for fixed stage1 bugs

Closes #1957
Closes #1994
Closes #2140
Closes #2746
Closes #2802
Closes #2855
Closes #2895
Closes #2981
Closes #3054
Closes #3158
Closes #3234
Closes #3259
Closes #3371
Closes #3376
Closes #3387
Closes #3529
Closes #3653
Closes #3750
Closes #3778
Closes #3882
Closes #3915
Closes #3929
Closes #3961
Closes #3988
Closes #4123
Closes #7448
This commit is contained in:
Veikka Tuominen
2022-12-28 15:10:12 +02:00
parent 7350f0d9b5
commit 9a0c593a54
14 changed files with 374 additions and 0 deletions

View File

@@ -448,3 +448,46 @@ test "Optional slice size is optimized" {
a = "hello";
try expectEqualStrings(a.?, "hello");
}
test "peer type resolution in nested if expressions" {
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
const Thing = struct { n: i32 };
var a = false;
var b = false;
var result1 = if (a)
Thing{ .n = 1 }
else
null;
try expect(result1 == null);
try expect(@TypeOf(result1) == ?Thing);
var result2 = if (a)
Thing{ .n = 0 }
else if (b)
Thing{ .n = 1 }
else
null;
try expect(result2 == null);
try expect(@TypeOf(result2) == ?Thing);
}
test "cast slice to const slice nested in error union and optional" {
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
const S = struct {
fn inner() !?[]u8 {
return error.Foo;
}
fn outer() !?[]const u8 {
return inner();
}
};
try std.testing.expectError(error.Foo, S.outer());
}