update tests and translate-c

This commit is contained in:
Vexu
2020-01-15 20:40:56 +02:00
parent 6fd0dddf18
commit b971c7d0ff
5 changed files with 78 additions and 42 deletions

View File

@@ -2,6 +2,28 @@ const tests = @import("tests.zig");
const builtin = @import("builtin");
pub fn addCases(cases: *tests.CompileErrorContext) void {
cases.addTest("non-exhaustive enums",
\\const E = enum {
\\ a,
\\ b,
\\ _,
\\};
\\pub export fn entry() void {
\\ var e: E = .b;
\\ switch (e) { // error: switch not handling the tag `b`
\\ .a => {},
\\ _ => {},
\\ }
\\ switch (e) { // error: switch on non-exhaustive enum must include `else` or `_` prong
\\ .a => {},
\\ .b => {},
\\ }
\\}
, &[_][]const u8{
"tmp.zig:8:5: error: enumeration value 'E.b' not handled in switch",
"tmp.zig:12:5: error: switch on non-exhaustive enum must include `else` or `_` prong",
});
cases.addTest("@export with empty name string",
\\pub export fn entry() void { }
\\comptime {
@@ -139,25 +161,6 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
"tmp.zig:2:13: error: pointer type '[*]align(4) u8' requires aligned address",
});
cases.add("switch on extern enum missing else prong",
\\const i = extern enum {
\\ n = 0,
\\ o = 2,
\\ p = 4,
\\ q = 4,
\\};
\\pub fn main() void {
\\ var x = @intToEnum(i, 52);
\\ switch (x) {
\\ .n,
\\ .o,
\\ .p => unreachable,
\\ }
\\}
, &[_][]const u8{
"tmp.zig:9:5: error: switch on an extern enum must have an else prong",
});
cases.add("invalid float literal",
\\const std = @import("std");
\\