diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2016-01-13 18:15:51 -0700 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2016-01-13 18:15:51 -0700 |
| commit | b28b7f63d15ab0fdd9064c6c58e6339705edbc27 (patch) | |
| tree | 8139f31b749a6838bb92d16053e371f826224d32 /test/run_tests.cpp | |
| parent | cb46d0b5b0d1d83856adab34b461049f5cfac019 (diff) | |
| download | zig-b28b7f63d15ab0fdd9064c6c58e6339705edbc27.tar.gz zig-b28b7f63d15ab0fdd9064c6c58e6339705edbc27.zip | |
all types are now expressions
See #22
Diffstat (limited to 'test/run_tests.cpp')
| -rw-r--r-- | test/run_tests.cpp | 418 |
1 files changed, 209 insertions, 209 deletions
diff --git a/test/run_tests.cpp b/test/run_tests.cpp index 445433a863..04cf942c37 100644 --- a/test/run_tests.cpp +++ b/test/run_tests.cpp @@ -96,50 +96,50 @@ static TestCase *add_compile_fail_case(const char *case_name, const char *source static void add_compiling_test_cases(void) { add_simple_case("hello world with libc", R"SOURCE( - #link("c") - extern { - fn puts(s: &const u8) -> i32; - } +#link("c") +extern { + fn puts(s: &const u8) i32; +} - export fn main(argc: i32, argv: &&u8, env: &&u8) -> i32 { - puts(c"Hello, world!"); - return 0; - } +export fn main(argc: i32, argv: &&u8, env: &&u8) i32 => { + puts(c"Hello, world!"); + return 0; +} )SOURCE", "Hello, world!\n"); add_simple_case("function call", R"SOURCE( - use "std.zig"; - use "syscall.zig"; +use "std.zig"; +use "syscall.zig"; - fn empty_function_1() {} - fn empty_function_2() { return; } +fn empty_function_1() => {} +fn empty_function_2() => { return; } - pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { - empty_function_1(); - empty_function_2(); - this_is_a_function(); - } +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { + empty_function_1(); + empty_function_2(); + this_is_a_function(); +} - fn this_is_a_function() -> unreachable { - print_str("OK\n"); - exit(0); - } +fn this_is_a_function() unreachable => { + print_str("OK\n"); + exit(0); +} )SOURCE", "OK\n"); add_simple_case("comments", R"SOURCE( - use "std.zig"; - - /** - * multi line doc comment - */ - fn another_function() {} - - /// this is a documentation comment - /// doc comment line 2 - pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { - print_str(/* mid-line comment /* nested */ */ "OK\n"); - return 0; - } +use "std.zig"; + +/** + * multi line doc comment + */ +fn another_function() => {} + +/// this is a documentation comment +/// doc comment line 2 +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { + print_str(/* mid-line comment /* nested */ */ "OK\n"); + return 0; +} )SOURCE", "OK\n"); { @@ -147,13 +147,13 @@ static void add_compiling_test_cases(void) { use "std.zig"; use "foo.zig"; -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { private_function(); print_str("OK 2\n"); return 0; } -fn private_function() { +fn private_function() => { print_text(); } )SOURCE", "OK 1\nOK 2\n"); @@ -163,11 +163,11 @@ use "std.zig"; // purposefully conflicting function with main.zig // but it's private so it should be OK -fn private_function() { +fn private_function() => { print_str("OK 1\n"); } -pub fn print_text() { +pub fn print_text() => { private_function(); } )SOURCE"); @@ -178,7 +178,7 @@ pub fn print_text() { use "foo.zig"; use "bar.zig"; -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { foo_function(); bar_function(); return 0; @@ -187,7 +187,7 @@ pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { add_source_file(tc, "foo.zig", R"SOURCE( use "std.zig"; -pub fn foo_function() { +pub fn foo_function() => { print_str("OK\n"); } )SOURCE"); @@ -196,7 +196,7 @@ pub fn foo_function() { use "other.zig"; use "std.zig"; -pub fn bar_function() { +pub fn bar_function() => { if (foo_function()) { print_str("OK\n"); } @@ -204,7 +204,7 @@ pub fn bar_function() { )SOURCE"); add_source_file(tc, "other.zig", R"SOURCE( -pub fn foo_function() -> bool { +pub fn foo_function() bool => { // this one conflicts with the one from foo return true; } @@ -212,65 +212,65 @@ pub fn foo_function() -> bool { } add_simple_case("if statements", R"SOURCE( - use "std.zig"; +use "std.zig"; - pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { - if (1 != 0) { - print_str("1 is true\n"); - } else { - print_str("1 is false\n"); - } - if (0 != 0) { - print_str("0 is true\n"); - } else if (1 - 1 != 0) { - print_str("1 - 1 is true\n"); - } - if (!(0 != 0)) { - print_str("!0 is true\n"); - } - return 0; - } +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { + if (1 != 0) { + print_str("1 is true\n"); + } else { + print_str("1 is false\n"); + } + if (0 != 0) { + print_str("0 is true\n"); + } else if (1 - 1 != 0) { + print_str("1 - 1 is true\n"); + } + if (!(0 != 0)) { + print_str("!0 is true\n"); + } + return 0; +} )SOURCE", "1 is true\n!0 is true\n"); add_simple_case("params", R"SOURCE( - use "std.zig"; +use "std.zig"; - fn add(a: i32, b: i32) -> i32 { - a + b - } +fn add(a: i32, b: i32) i32 => { + a + b +} - pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { - if (add(22, 11) == 33) { - print_str("pass\n"); - } - return 0; - } +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { + if (add(22, 11) == 33) { + print_str("pass\n"); + } + return 0; +} )SOURCE", "pass\n"); add_simple_case("goto", R"SOURCE( - use "std.zig"; +use "std.zig"; - fn loop(a : i32) { - if (a == 0) { - goto done; - } - print_str("loop\n"); - loop(a - 1); +fn loop(a : i32) => { + if (a == 0) { + goto done; + } + print_str("loop\n"); + loop(a - 1); - done: - return; - } +done: + return; +} - pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { - loop(3); - return 0; - } +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { + loop(3); + return 0; +} )SOURCE", "loop\nloop\nloop\n"); add_simple_case("local variables", R"SOURCE( use "std.zig"; -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { const a : i32 = 1; const b = 2 as i32; if (a + b == 3) { @@ -283,7 +283,7 @@ pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { add_simple_case("bool literals", R"SOURCE( use "std.zig"; -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { if (true) { print_str("OK 1\n"); } if (false) { print_str("BAD 1\n"); } if (!true) { print_str("BAD 2\n"); } @@ -295,7 +295,7 @@ pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { add_simple_case("separate block scopes", R"SOURCE( use "std.zig"; -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { if (true) { const no_conflict : i32 = 5; if (no_conflict == 5) { print_str("OK 1\n"); } @@ -313,12 +313,12 @@ pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { add_simple_case("void parameters", R"SOURCE( use "std.zig"; -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { - void_fun(1, void, 2); +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { + void_fun(1, void{}, 2); return 0; } -fn void_fun(a : i32, b : void, c : i32) { +fn void_fun(a : i32, b : void, c : i32) => { const v = b; const vv : void = if (a == 1) {v} else {}; if (a + c == 3) { print_str("OK\n"); } @@ -333,16 +333,16 @@ struct Foo { b : i32, c : void, } -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { const foo = Foo { - .a = void, + .a = void{}, .b = 1, - .c = void, + .c = void{}, }; if (foo.b != 1) { print_str("BAD\n"); } - if (#sizeof(Foo) != 4) { + if (@sizeof(Foo) != 4) { print_str("BAD\n"); } print_str("OK\n"); @@ -354,7 +354,7 @@ pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { add_simple_case("mutable local variables", R"SOURCE( use "std.zig"; -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { var zero : i32 = 0; if (zero == 0) { print_str("zero\n"); } @@ -374,7 +374,7 @@ done: add_simple_case("arrays", R"SOURCE( use "std.zig"; -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { var array : [5]u32; var i : u32 = 0; @@ -401,7 +401,7 @@ pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { return 0; } -fn get_array_len(a: []u32) -> usize { +fn get_array_len(a: []u32) usize => { a.len } )SOURCE", "OK\n"); @@ -410,7 +410,7 @@ fn get_array_len(a: []u32) -> usize { add_simple_case("hello world without libc", R"SOURCE( use "std.zig"; -pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { +pub fn main(argc : isize, argv : &&u8, env : &&u8) i32 => { print_str("Hello, world!\n"); return 0; } @@ -420,7 +420,7 @@ pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { add_simple_case("a + b + c", R"SOURCE( use "std.zig"; -pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { +pub fn main(argc : isize, argv : &&u8, env : &&u8) i32 => { if (false || false || false) { print_str("BAD 1\n"); } if (true && true && false) { print_str("BAD 2\n"); } if (1 | 2 | 4 != 7) { print_str("BAD 3\n"); } @@ -442,7 +442,7 @@ pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { add_simple_case("short circuit", R"SOURCE( use "std.zig"; -pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { +pub fn main(argc : isize, argv : &&u8, env : &&u8) i32 => { if (true || { print_str("BAD 1\n"); false }) { print_str("OK 1\n"); } @@ -465,7 +465,7 @@ pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { add_simple_case("modify operators", R"SOURCE( use "std.zig"; -pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { +pub fn main(argc : isize, argv : &&u8, env : &&u8) i32 => { var i : i32 = 0; i += 5; if (i != 5) { print_str("BAD +=\n"); } i -= 2; if (i != 3) { print_str("BAD -=\n"); } @@ -488,10 +488,10 @@ pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { add_simple_case("number literals", R"SOURCE( #link("c") extern { - fn printf(__format: &const u8, ...) -> i32; + fn printf(__format: &const u8, ...) i32; } -export fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { +export fn main(argc : isize, argv : &&u8, env : &&u8) i32 => { printf(c"\n"); printf(c"0: %llu\n", @@ -617,9 +617,9 @@ export fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { add_simple_case("structs", R"SOURCE( use "std.zig"; -pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { +pub fn main(argc : isize, argv : &&u8, env : &&u8) i32 => { var foo : Foo; - @memset(&foo, 0, #sizeof(Foo)); + @memset(&foo, 0, @sizeof(Foo)); foo.a += 1; foo.b = foo.a == 1; test_foo(foo); @@ -638,12 +638,12 @@ struct Foo { b : bool, c : f32, } -fn test_foo(foo : Foo) { +fn test_foo(foo : Foo) => { if (!foo.b) { print_str("BAD\n"); } } -fn test_mutation(foo : &Foo) { +fn test_mutation(foo : &Foo) => { foo.c = 100; } struct Node { @@ -654,7 +654,7 @@ struct Node { struct Val { x: i32, } -fn test_point_to_self() { +fn test_point_to_self() => { var root : Node; root.val.x = 1; @@ -668,7 +668,7 @@ fn test_point_to_self() { print_str("BAD\n"); } } -fn test_byval_assign() { +fn test_byval_assign() => { var foo1 : Foo; var foo2 : Foo; @@ -680,7 +680,7 @@ fn test_byval_assign() { if (foo2.a != 1234) { print_str("BAD - byval assignment failed\n"); } } -fn test_initializer() { +fn test_initializer() => { const val = Val { .x = 42 }; if (val.x != 42) { print_str("BAD\n"); } } @@ -692,7 +692,7 @@ use "std.zig"; const g1 : i32 = 1233 + 1; var g2 : i32 = 0; -pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { +pub fn main(argc : isize, argv : &&u8, env : &&u8) i32 => { if (g2 != 0) { print_str("BAD\n"); } g2 = g1; if (g2 != 1234) { print_str("BAD\n"); } @@ -703,7 +703,7 @@ pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { add_simple_case("while loop", R"SOURCE( use "std.zig"; -pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { +pub fn main(argc : isize, argv : &&u8, env : &&u8) i32 => { var i : i32 = 0; while (i < 4) { print_str("loop\n"); @@ -711,7 +711,7 @@ pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { } return f(); } -fn f() -> i32 { +fn f() i32 => { while (true) { return 0; } @@ -720,7 +720,7 @@ fn f() -> i32 { add_simple_case("continue and break", R"SOURCE( use "std.zig"; -pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { +pub fn main(argc : isize, argv : &&u8, env : &&u8) i32 => { var i : i32 = 0; while (true) { print_str("loop\n"); @@ -736,7 +736,7 @@ pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { add_simple_case("maybe type", R"SOURCE( use "std.zig"; -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { const x : ?bool = true; if (const y ?= x) { @@ -759,7 +759,7 @@ pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { const final_x : ?i32 = 13; - const num = final_x ?? unreachable; + const num = final_x ?? unreachable{}; if (num != 13) { print_str("BAD\n"); @@ -771,26 +771,26 @@ pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { add_simple_case("implicit cast after unreachable", R"SOURCE( use "std.zig"; -pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { +pub fn main(argc : isize, argv : &&u8, env : &&u8) i32 => { const x = outer(); if (x == 1234) { print_str("OK\n"); } return 0; } -fn inner() -> i32 { 1234 } -fn outer() -> isize { +fn inner() i32 => { 1234 } +fn outer() isize => { return inner(); } )SOURCE", "OK\n"); - add_simple_case("#sizeof() and #typeof()", R"SOURCE( + add_simple_case("@sizeof() and @typeof()", R"SOURCE( use "std.zig"; const x: u16 = 13; -const z: #typeof(x) = 19; -pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { - const y: #typeof(x) = 120; - print_u64(#sizeof(#typeof(y))); +const z: @typeof(x) = 19; +pub fn main(argc : isize, argv : &&u8, env : &&u8) i32 => { + const y: @typeof(x) = 120; + print_u64(@sizeof(@typeof(y))); print_str("\n"); return 0; } @@ -800,11 +800,11 @@ pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { use "std.zig"; struct Rand { seed: u32, - pub fn get_seed(r: Rand) -> u32 { + pub fn get_seed(r: Rand) u32 => { r.seed } } -pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { +pub fn main(argc : isize, argv : &&u8, env : &&u8) i32 => { const r = Rand {.seed = 1234}; if (r.get_seed() != 1234) { print_str("BAD seed\n"); @@ -817,7 +817,7 @@ pub fn main(argc : isize, argv : &&u8, env : &&u8) -> i32 { add_simple_case("pointer dereferencing", R"SOURCE( use "std.zig"; -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { var x = 3 as i32; const y = &x; @@ -839,9 +839,9 @@ use "std.zig"; const ARRAY_SIZE : u8 = 20; -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { var array : [ARRAY_SIZE]u8; - print_u64(#sizeof(#typeof(array))); + print_u64(@sizeof(@typeof(array))); print_str("\n"); return 0; } @@ -849,69 +849,69 @@ pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { add_simple_case("#min_value() and #max_value()", R"SOURCE( use "std.zig"; -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { print_str("max u8: "); - print_u64(#max_value(u8)); + print_u64(@max_value(u8)); print_str("\n"); print_str("max u16: "); - print_u64(#max_value(u16)); + print_u64(@max_value(u16)); print_str("\n"); print_str("max u32: "); - print_u64(#max_value(u32)); + print_u64(@max_value(u32)); print_str("\n"); print_str("max u64: "); - print_u64(#max_value(u64)); + print_u64(@max_value(u64)); print_str("\n"); print_str("max i8: "); - print_i64(#max_value(i8)); + print_i64(@max_value(i8)); print_str("\n"); print_str("max i16: "); - print_i64(#max_value(i16)); + print_i64(@max_value(i16)); print_str("\n"); print_str("max i32: "); - print_i64(#max_value(i32)); + print_i64(@max_value(i32)); print_str("\n"); print_str("max i64: "); - print_i64(#max_value(i64)); + print_i64(@max_value(i64)); print_str("\n"); print_str("min u8: "); - print_u64(#min_value(u8)); + print_u64(@min_value(u8)); print_str("\n"); print_str("min u16: "); - print_u64(#min_value(u16)); + print_u64(@min_value(u16)); print_str("\n"); print_str("min u32: "); - print_u64(#min_value(u32)); + print_u64(@min_value(u32)); print_str("\n"); print_str("min u64: "); - print_u64(#min_value(u64)); + print_u64(@min_value(u64)); print_str("\n"); print_str("min i8: "); - print_i64(#min_value(i8)); + print_i64(@min_value(i8)); print_str("\n"); print_str("min i16: "); - print_i64(#min_value(i16)); + print_i64(@min_value(i16)); print_str("\n"); print_str("min i32: "); - print_i64(#min_value(i32)); + print_i64(@min_value(i32)); print_str("\n"); print_str("min i64: "); - print_i64(#min_value(i64)); + print_i64(@min_value(i64)); print_str("\n"); return 0; @@ -937,7 +937,7 @@ pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { add_simple_case("slicing", R"SOURCE( use "std.zig"; -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { var array : [20]i32; array[5] = 1234; @@ -965,13 +965,13 @@ pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { add_simple_case("else if expression", R"SOURCE( use "std.zig"; -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { if (f(1) == 1) { print_str("OK\n"); } return 0; } -fn f(c: u8) -> u8 { +fn f(c: u8) u8 => { if (c == 0) { 0 } else if (c == 1) { @@ -984,7 +984,7 @@ fn f(c: u8) -> u8 { add_simple_case("overflow intrinsics", R"SOURCE( use "std.zig"; -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { var result: u8; if (!@add_with_overflow_u8(250, 100, &result)) { print_str("BAD\n"); @@ -1002,7 +1002,7 @@ pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { add_simple_case("memcpy and memset intrinsics", R"SOURCE( use "std.zig"; -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { var foo : [20]u8; var bar : [20]u8; @@ -1020,13 +1020,13 @@ pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { add_simple_case("order-independent declarations", R"SOURCE( use "std.zig"; -const z : #typeof(stdin_fileno) = 0; -const x : #typeof(y) = 1234; +const z : @typeof(stdin_fileno) = 0; +const x : @typeof(y) = 1234; const y : u16 = 5678; -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { print_ok(x) } -fn print_ok(val: #typeof(x)) -> #typeof(foo) { +fn print_ok(val: @typeof(x)) @typeof(foo) => { print_str("OK\n"); return 0; } @@ -1054,7 +1054,7 @@ enum Bar { D, } -pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { +pub fn main(argc: isize, argv: &&u8, env: &&u8) i32 => { const foo1 = Foo.One(13); const foo2 = Foo.Two(Point { .x = 1234, .y = 5678, }); const bar = Bar.B; @@ -1063,18 +1063,18 @@ pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { print_str("BAD\n"); } - if (#value_count(Foo) != 3) { + if (@value_count(Foo) != 3) { print_str("BAD\n"); } - if (#value_count(Bar) != 4) { + if (@value_count(Bar) != 4) { print_str("BAD\n"); } - if (#sizeof(Foo) != 17) { + if (@sizeof(Foo) != 17) { print_str("BAD\n"); } - if (#sizeof(Bar) != 1) { + if (@sizeof(Bar) != 1) { print_str("BAD\n"); } @@ -1090,8 +1090,8 @@ pub fn main(argc: isize, argv: &&u8, env: &&u8) -> i32 { static void add_compile_failure_test_cases(void) { add_compile_fail_case("multiple function definitions", R"SOURCE( -fn a() {} -fn a() {} +fn a() => {} +fn a() => {} )SOURCE", 1, ".tmp_source.zig:3:1: error: redefinition of 'a'"); add_compile_fail_case("bad directive", R"SOURCE( @@ -1100,46 +1100,46 @@ extern { fn b(); } #bogus2("") -fn a() {} +fn a() => {} )SOURCE", 2, ".tmp_source.zig:2:1: error: invalid directive: 'bogus1'", ".tmp_source.zig:6:1: error: invalid directive: 'bogus2'"); add_compile_fail_case("unreachable with return", R"SOURCE( -fn a() -> unreachable {return;} +fn a() unreachable => {return;} )SOURCE", 1, ".tmp_source.zig:2:24: error: expected type 'unreachable', got 'void'"); add_compile_fail_case("control reaches end of non-void function", R"SOURCE( -fn a() -> i32 {} +fn a() i32 => {} )SOURCE", 1, ".tmp_source.zig:2:15: error: expected type 'i32', got 'void'"); add_compile_fail_case("undefined function call", R"SOURCE( -fn a() { +fn a() => { b(); } )SOURCE", 1, ".tmp_source.zig:3:5: error: undefined function: 'b'"); add_compile_fail_case("wrong number of arguments", R"SOURCE( -fn a() { +fn a() => { b(1); } -fn b(a: i32, b: i32, c: i32) { } +fn b(a: i32, b: i32, c: i32) => { } )SOURCE", 1, ".tmp_source.zig:3:6: error: expected 3 arguments, got 1"); add_compile_fail_case("invalid type", R"SOURCE( -fn a() -> bogus {} - )SOURCE", 1, ".tmp_source.zig:2:11: error: invalid type name: 'bogus'"); +fn a() bogus => {} + )SOURCE", 1, ".tmp_source.zig:2:8: error: use of undeclared identifier 'bogus'"); add_compile_fail_case("pointer to unreachable", R"SOURCE( -fn a() -> &unreachable {} - )SOURCE", 1, ".tmp_source.zig:2:11: error: pointer to unreachable not allowed"); +fn a() &unreachable => {} + )SOURCE", 1, ".tmp_source.zig:2:8: error: pointer to unreachable not allowed"); add_compile_fail_case("unreachable code", R"SOURCE( -fn a() { +fn a() => { return; b(); } -fn b() {} +fn b() => {} )SOURCE", 1, ".tmp_source.zig:4:5: error: unreachable code"); add_compile_fail_case("bad version string", R"SOURCE( @@ -1152,7 +1152,7 @@ use "bogus-does-not-exist.zig"; )SOURCE", 1, ".tmp_source.zig:2:1: error: unable to find 'bogus-does-not-exist.zig'"); add_compile_fail_case("undeclared identifier", R"SOURCE( -fn a() { +fn a() => { b + c } @@ -1161,99 +1161,99 @@ fn a() { ".tmp_source.zig:4:5: error: use of undeclared identifier 'c'"); add_compile_fail_case("goto cause unreachable code", R"SOURCE( -fn a() { +fn a() => { goto done; b(); done: return; } -fn b() {} +fn b() => {} )SOURCE", 1, ".tmp_source.zig:4:5: error: unreachable code"); add_compile_fail_case("parameter redeclaration", R"SOURCE( -fn f(a : i32, a : i32) { +fn f(a : i32, a : i32) => { } )SOURCE", 1, ".tmp_source.zig:2:1: error: redeclaration of parameter 'a'"); add_compile_fail_case("local variable redeclaration", R"SOURCE( -fn f() { +fn f() => { const a : i32 = 0; const a = 0; } )SOURCE", 1, ".tmp_source.zig:4:5: error: redeclaration of variable 'a'"); add_compile_fail_case("local variable redeclares parameter", R"SOURCE( -fn f(a : i32) { +fn f(a : i32) => { const a = 0; } )SOURCE", 1, ".tmp_source.zig:3:5: error: redeclaration of variable 'a'"); add_compile_fail_case("variable has wrong type", R"SOURCE( -fn f() -> i32 { +fn f() i32 => { const a = c"a"; a } )SOURCE", 1, ".tmp_source.zig:2:15: error: expected type 'i32', got '&const u8'"); add_compile_fail_case("if condition is bool, not int", R"SOURCE( -fn f() { +fn f() => { if (0) {} } )SOURCE", 1, ".tmp_source.zig:3:9: error: expected type 'bool', got '(u8 literal)'"); add_compile_fail_case("assign unreachable", R"SOURCE( -fn f() { +fn f() => { const a = return; } )SOURCE", 1, ".tmp_source.zig:3:5: error: variable initialization is unreachable"); add_compile_fail_case("unreachable variable", R"SOURCE( -fn f() { +fn f() => { const a : unreachable = return; } )SOURCE", 1, ".tmp_source.zig:3:15: error: variable of type 'unreachable' not allowed"); add_compile_fail_case("unreachable parameter", R"SOURCE( -fn f(a : unreachable) {} +fn f(a : unreachable) => {} )SOURCE", 1, ".tmp_source.zig:2:10: error: parameter of type 'unreachable' not allowed"); add_compile_fail_case("exporting a void parameter", R"SOURCE( -export fn f(a : void) {} +export fn f(a : void) => {} )SOURCE", 1, ".tmp_source.zig:2:17: error: parameter of type 'void' not allowed on exported functions"); add_compile_fail_case("unused label", R"SOURCE( -fn f() { +fn f() => { a_label: } )SOURCE", 1, ".tmp_source.zig:3:1: error: label 'a_label' defined but not used"); add_compile_fail_case("bad assignment target", R"SOURCE( -fn f() { +fn f() => { 3 = 3; } )SOURCE", 1, ".tmp_source.zig:3:5: error: invalid assignment target"); add_compile_fail_case("assign to constant variable", R"SOURCE( -fn f() { +fn f() => { const a = 3; a = 4; } )SOURCE", 1, ".tmp_source.zig:4:5: error: cannot assign to constant"); add_compile_fail_case("use of undeclared identifier", R"SOURCE( -fn f() { +fn f() => { b = 3; } )SOURCE", 1, ".tmp_source.zig:3:5: error: use of undeclared identifier 'b'"); add_compile_fail_case("const is a statement, not an expression", R"SOURCE( -fn f() { +fn f() => { (const a = 0); } )SOURCE", 1, ".tmp_source.zig:3:6: error: invalid token: 'const'"); add_compile_fail_case("array access errors", R"SOURCE( -fn f() { +fn f() => { var bad : bool; i[i] = i[i]; bad[bad] = bad[bad]; @@ -1268,19 +1268,19 @@ fn f() { ".tmp_source.zig:5:20: error: expected type 'usize', got 'bool'"); add_compile_fail_case("variadic functions only allowed in extern", R"SOURCE( -fn f(...) {} +fn f(...) => {} )SOURCE", 1, ".tmp_source.zig:2:1: error: variadic arguments only allowed in extern functions"); add_compile_fail_case("write to const global variable", R"SOURCE( const x : i32 = 99; -fn f() { +fn f() => { x = 1; } )SOURCE", 1, ".tmp_source.zig:4:5: error: cannot assign to constant"); add_compile_fail_case("missing else clause", R"SOURCE( -fn f() { +fn f() => { const x : i32 = if (true) { 1 }; const y = if (true) { 1 as i32 }; } @@ -1299,7 +1299,7 @@ struct C { a : A, } add_compile_fail_case("invalid struct field", R"SOURCE( struct A { x : i32, } -fn f() { +fn f() => { var a : A; a.foo = 1; const y = a.bar; @@ -1315,7 +1315,7 @@ struct A { y : i32, } add_compile_fail_case("byvalue struct on exported functions", R"SOURCE( struct A { x : i32, } -export fn f(a : A) {} +export fn f(a : A) => {} )SOURCE", 1, ".tmp_source.zig:3:13: error: byvalue struct parameters not yet supported on exported functions"); add_compile_fail_case("duplicate field in struct value expression", R"SOURCE( @@ -1324,7 +1324,7 @@ struct A { y : i32, z : i32, } -fn f() { +fn f() => { const a = A { .z = 1, .y = 2, @@ -1340,13 +1340,13 @@ struct A { y : i32, z : i32, } -fn f() { +fn f() => { const a = A { .z = 4, .y = 2, }; } - )SOURCE", 1, ".tmp_source.zig:8:15: error: missing field: 'x'"); + )SOURCE", 1, ".tmp_source.zig:8:17: error: missing field: 'x'"); add_compile_fail_case("invalid field in struct value expression", R"SOURCE( struct A { @@ -1354,7 +1354,7 @@ struct A { y : i32, z : i32, } -fn f() { +fn f() => { const a = A { .z = 4, .y = 2, @@ -1364,37 +1364,37 @@ fn f() { )SOURCE", 1, ".tmp_source.zig:11:9: error: no member named 'foo' in 'A'"); add_compile_fail_case("invalid break expression", R"SOURCE( -fn f() { +fn f() => { break; } )SOURCE", 1, ".tmp_source.zig:3:5: error: 'break' expression outside loop"); add_compile_fail_case("invalid continue expression", R"SOURCE( -fn f() { +fn f() => { continue; } )SOURCE", 1, ".tmp_source.zig:3:5: error: 'continue' expression outside loop"); add_compile_fail_case("invalid maybe type", R"SOURCE( -fn f() { +fn f() => { if (const x ?= true) { } } )SOURCE", 1, ".tmp_source.zig:3:20: error: expected maybe type"); add_compile_fail_case("cast unreachable", R"SOURCE( -fn f() -> i32 { +fn f() i32 => { (return 1) as i32 } )SOURCE", 1, ".tmp_source.zig:3:16: error: invalid cast from type 'unreachable' to 'i32'"); - add_compile_fail_case("invalid compiler fn", R"SOURCE( -fn f() -> #bogus(foo) { + add_compile_fail_case("invalid builtin fn", R"SOURCE( +fn f() @bogus(foo) => { } - )SOURCE", 1, ".tmp_source.zig:2:11: error: invalid compiler function: 'bogus'"); + )SOURCE", 1, ".tmp_source.zig:2:8: error: invalid builtin function: 'bogus'"); add_compile_fail_case("top level decl dependency loop", R"SOURCE( -const a : #typeof(b) = 0; -const b : #typeof(a) = 0; +const a : @typeof(b) = 0; +const b : @typeof(a) = 0; )SOURCE", 1, ".tmp_source.zig:3:19: error: use of undeclared identifier 'a'"); } |
