authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-01-25 20:27:57-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-01-25 20:27:57-07:00
log1d68150242c9304ac7f35a3d827c3c6e5aeea521
tree0720bd2eb1f83fd369282ebbcc1034b4eab564e3
parent50854226a6c6b78b4456ee6beeaae52ca0db6b0d

compiler enforces checking for error

See #23

6 files changed, 202 insertions(+), 199 deletions(-)

example/cat/main.zig+4-5
......@@ -5,11 +5,10 @@ import "std.zig";
55// Things to do to make this work:
66// * var args printing
77// * defer
8// * %% prefix operator
98// * cast err type to string
109// * string equality
1110
12pub fn main(args: [][]u8) %void => {
11pub fn main(args: [][]u8) -> %void {
1312 const exe = args[0];
1413 var catted_anything = false;
1514 for (arg, args[1...]) {
......@@ -21,7 +20,7 @@ pub fn main(args: [][]u8) %void => {
2120 } else {
2221 var is: InputStream;
2322 is.open(arg, OpenReadOnly) %% |err| {
24 %%stderr.print("Unable to open file: {}", ([]u8])(err));
23 %%stderr.print("Unable to open file: {}", ([]u8)(err));
2524 return err;
2625 }
2726 defer is.close();
......@@ -35,12 +34,12 @@ pub fn main(args: [][]u8) %void => {
3534 }
3635}
3736
38fn usage(exe: []u8) %void => {
37fn usage(exe: []u8) -> %void {
3938 %%stderr.print("Usage: {} [FILE]...\n", exe);
4039 return error.Invalid;
4140}
4241
43fn cat_stream(is: InputStream) %void => {
42fn cat_stream(is: InputStream) -> %void {
4443 var buf: [1024 * 4]u8;
4544
4645 while (true) {
example/hello_world/hello.zig+1-1
......@@ -3,5 +3,5 @@ export executable "hello";
33import "std.zig";
44
55pub fn main(args: [][]u8) -> %void {
6 stdout.printf("Hello, world!\n");
6 %%stdout.printf("Hello, world!\n");
77}
example/multiple_files/foo.zig+1-1
......@@ -3,7 +3,7 @@ import "std.zig";
33// purposefully conflicting function with main.zig
44// but it's private so it should be OK
55fn private_function() {
6 stdout.printf("OK 1\n");
6 %%stdout.printf("OK 1\n");
77}
88
99pub fn print_text() {
example/multiple_files/main.zig+1-1
......@@ -5,7 +5,7 @@ import "foo.zig";
55
66pub fn main(args: [][]u8) -> %void {
77 private_function();
8 stdout.printf("OK 2\n");
8 %%stdout.printf("OK 2\n");
99}
1010
1111fn private_function() {
src/analyze.cpp+6-2
......@@ -3830,8 +3830,12 @@ static TypeTableEntry *analyze_block_expr(CodeGen *g, ImportTableEntry *import,
38303830 bool is_last = (i == node->data.block.statements.length - 1);
38313831 TypeTableEntry *passed_expected_type = is_last ? expected_type : nullptr;
38323832 return_type = analyze_expression(g, import, child_context, passed_expected_type, child);
3833 if (!is_last && return_type->id == TypeTableEntryIdMetaType) {
3834 add_node_error(g, child, buf_sprintf("expected expression, found type"));
3833 if (!is_last) {
3834 if (return_type->id == TypeTableEntryIdMetaType) {
3835 add_node_error(g, child, buf_sprintf("expected expression, found type"));
3836 } else if (return_type->id == TypeTableEntryIdErrorUnion) {
3837 add_node_error(g, child, buf_sprintf("statement ignores error value"));
3838 }
38353839 }
38363840 }
38373841 return return_type;
test/run_tests.cpp+189-189
......@@ -121,7 +121,7 @@ pub fn main(args: [][]u8) -> %void {
121121}
122122
123123fn this_is_a_function() -> unreachable {
124 stdout.printf("OK\n");
124 %%stdout.printf("OK\n");
125125 exit(0);
126126}
127127 )SOURCE", "OK\n");
......@@ -137,7 +137,7 @@ fn another_function() {}
137137/// this is a documentation comment
138138/// doc comment line 2
139139pub fn main(args: [][]u8) -> %void {
140 stdout.printf(/* mid-line comment /* nested */ */ "OK\n");
140 %%stdout.printf(/* mid-line comment /* nested */ */ "OK\n");
141141}
142142 )SOURCE", "OK\n");
143143
......@@ -148,7 +148,7 @@ import "foo.zig";
148148
149149pub fn main(args: [][]u8) -> %void {
150150 private_function();
151 stdout.printf("OK 2\n");
151 %%stdout.printf("OK 2\n");
152152}
153153
154154fn private_function() {
......@@ -162,7 +162,7 @@ import "std.zig";
162162// purposefully conflicting function with main.zig
163163// but it's private so it should be OK
164164fn private_function() {
165 stdout.printf("OK 1\n");
165 %%stdout.printf("OK 1\n");
166166}
167167
168168pub fn print_text() {
......@@ -185,7 +185,7 @@ pub fn main(args: [][]u8) -> %void {
185185 add_source_file(tc, "foo.zig", R"SOURCE(
186186import "std.zig";
187187pub fn foo_function() {
188 stdout.printf("OK\n");
188 %%stdout.printf("OK\n");
189189}
190190 )SOURCE");
191191
......@@ -195,7 +195,7 @@ import "std.zig";
195195
196196pub fn bar_function() {
197197 if (foo_function()) {
198 stdout.printf("OK\n");
198 %%stdout.printf("OK\n");
199199 }
200200}
201201 )SOURCE");
......@@ -213,17 +213,17 @@ import "std.zig";
213213
214214pub fn main(args: [][]u8) -> %void {
215215 if (1 != 0) {
216 stdout.printf("1 is true\n");
216 %%stdout.printf("1 is true\n");
217217 } else {
218 stdout.printf("1 is false\n");
218 %%stdout.printf("1 is false\n");
219219 }
220220 if (0 != 0) {
221 stdout.printf("0 is true\n");
221 %%stdout.printf("0 is true\n");
222222 } else if (1 - 1 != 0) {
223 stdout.printf("1 - 1 is true\n");
223 %%stdout.printf("1 - 1 is true\n");
224224 }
225225 if (!(0 != 0)) {
226 stdout.printf("!0 is true\n");
226 %%stdout.printf("!0 is true\n");
227227 }
228228}
229229 )SOURCE", "1 is true\n!0 is true\n");
......@@ -237,7 +237,7 @@ fn add(a: i32, b: i32) -> i32 {
237237
238238pub fn main(args: [][]u8) -> %void {
239239 if (add(22, 11) == 33) {
240 stdout.printf("pass\n");
240 %%stdout.printf("pass\n");
241241 }
242242}
243243 )SOURCE", "pass\n");
......@@ -249,7 +249,7 @@ fn loop(a : i32) {
249249 if (a == 0) {
250250 goto done;
251251 }
252 stdout.printf("loop\n");
252 %%stdout.printf("loop\n");
253253 loop(a - 1);
254254
255255done:
......@@ -268,7 +268,7 @@ pub fn main(args: [][]u8) -> %void {
268268 const a : i32 = 1;
269269 const b = i32(2);
270270 if (a + b == 3) {
271 stdout.printf("OK\n");
271 %%stdout.printf("OK\n");
272272 }
273273}
274274 )SOURCE", "OK\n");
......@@ -277,10 +277,10 @@ pub fn main(args: [][]u8) -> %void {
277277import "std.zig";
278278
279279pub fn main(args: [][]u8) -> %void {
280 if (true) { stdout.printf("OK 1\n"); }
281 if (false) { stdout.printf("BAD 1\n"); }
282 if (!true) { stdout.printf("BAD 2\n"); }
283 if (!false) { stdout.printf("OK 2\n"); }
280 if (true) { %%stdout.printf("OK 1\n"); }
281 if (false) { %%stdout.printf("BAD 1\n"); }
282 if (!true) { %%stdout.printf("BAD 2\n"); }
283 if (!false) { %%stdout.printf("OK 2\n"); }
284284}
285285 )SOURCE", "OK 1\nOK 2\n");
286286
......@@ -290,14 +290,14 @@ import "std.zig";
290290pub fn main(args: [][]u8) -> %void {
291291 if (true) {
292292 const no_conflict : i32 = 5;
293 if (no_conflict == 5) { stdout.printf("OK 1\n"); }
293 if (no_conflict == 5) { %%stdout.printf("OK 1\n"); }
294294 }
295295
296296 const c = {
297297 const no_conflict = i32(10);
298298 no_conflict
299299 };
300 if (c == 10) { stdout.printf("OK 2\n"); }
300 if (c == 10) { %%stdout.printf("OK 2\n"); }
301301}
302302 )SOURCE", "OK 1\nOK 2\n");
303303
......@@ -311,7 +311,7 @@ pub fn main(args: [][]u8) -> %void {
311311fn void_fun(a : i32, b : void, c : i32) {
312312 const v = b;
313313 const vv : void = if (a == 1) {v} else {};
314 if (a + c == 3) { stdout.printf("OK\n"); }
314 if (a + c == 3) { %%stdout.printf("OK\n"); }
315315 return vv;
316316}
317317 )SOURCE", "OK\n");
......@@ -330,12 +330,12 @@ pub fn main(args: [][]u8) -> %void {
330330 .c = void{},
331331 };
332332 if (foo.b != 1) {
333 stdout.printf("BAD\n");
333 %%stdout.printf("BAD\n");
334334 }
335335 if (@sizeof(Foo) != 4) {
336 stdout.printf("BAD\n");
336 %%stdout.printf("BAD\n");
337337 }
338 stdout.printf("OK\n");
338 %%stdout.printf("OK\n");
339339}
340340
341341 )SOURCE", "OK\n");
......@@ -348,12 +348,12 @@ pub fn main(args: [][]u8) -> %void {
348348 array[0] = void{};
349349 array[1] = array[2];
350350 if (@sizeof(@typeof(array)) != 0) {
351 stdout.printf("BAD\n");
351 %%stdout.printf("BAD\n");
352352 }
353353 if (array.len != 4) {
354 stdout.printf("BAD\n");
354 %%stdout.printf("BAD\n");
355355 }
356 stdout.printf("OK\n");
356 %%stdout.printf("OK\n");
357357}
358358 )SOURCE", "OK\n");
359359
......@@ -363,11 +363,11 @@ import "std.zig";
363363
364364pub fn main(args: [][]u8) -> %void {
365365 var zero : i32 = 0;
366 if (zero == 0) { stdout.printf("zero\n"); }
366 if (zero == 0) { %%stdout.printf("zero\n"); }
367367
368368 var i = i32(0);
369369 while (i != 3) {
370 stdout.printf("loop\n");
370 %%stdout.printf("loop\n");
371371 i += 1;
372372 }
373373}
......@@ -394,11 +394,11 @@ pub fn main(args: [][]u8) -> %void {
394394 }
395395
396396 if (accumulator == 15) {
397 stdout.printf("OK\n");
397 %%stdout.printf("OK\n");
398398 }
399399
400400 if (get_array_len(array) != 5) {
401 stdout.printf("BAD\n");
401 %%stdout.printf("BAD\n");
402402 }
403403}
404404fn get_array_len(a: []i32) -> isize {
......@@ -411,7 +411,7 @@ fn get_array_len(a: []i32) -> isize {
411411import "std.zig";
412412
413413pub fn main(args: [][]u8) -> %void {
414 stdout.printf("Hello, world!\n");
414 %%stdout.printf("Hello, world!\n");
415415}
416416 )SOURCE", "Hello, world!\n");
417417
......@@ -420,20 +420,20 @@ pub fn main(args: [][]u8) -> %void {
420420import "std.zig";
421421
422422pub fn main(args: [][]u8) -> %void {
423 if (false || false || false) { stdout.printf("BAD 1\n"); }
424 if (true && true && false) { stdout.printf("BAD 2\n"); }
425 if (1 | 2 | 4 != 7) { stdout.printf("BAD 3\n"); }
426 if (3 ^ 6 ^ 8 != 13) { stdout.printf("BAD 4\n"); }
427 if (7 & 14 & 28 != 4) { stdout.printf("BAD 5\n"); }
428 if (9 << 1 << 2 != 9 << 3) { stdout.printf("BAD 6\n"); }
429 if (90 >> 1 >> 2 != 90 >> 3) { stdout.printf("BAD 7\n"); }
430 if (100 - 1 + 1000 != 1099) { stdout.printf("BAD 8\n"); }
431 if (5 * 4 / 2 % 3 != 1) { stdout.printf("BAD 9\n"); }
432 if (i32(i32(5)) != 5) { stdout.printf("BAD 10\n"); }
433 if (!!false) { stdout.printf("BAD 11\n"); }
434 if (i32(7) != --(i32(7))) { stdout.printf("BAD 12\n"); }
435
436 stdout.printf("OK\n");
423 if (false || false || false) { %%stdout.printf("BAD 1\n"); }
424 if (true && true && false) { %%stdout.printf("BAD 2\n"); }
425 if (1 | 2 | 4 != 7) { %%stdout.printf("BAD 3\n"); }
426 if (3 ^ 6 ^ 8 != 13) { %%stdout.printf("BAD 4\n"); }
427 if (7 & 14 & 28 != 4) { %%stdout.printf("BAD 5\n"); }
428 if (9 << 1 << 2 != 9 << 3) { %%stdout.printf("BAD 6\n"); }
429 if (90 >> 1 >> 2 != 90 >> 3) { %%stdout.printf("BAD 7\n"); }
430 if (100 - 1 + 1000 != 1099) { %%stdout.printf("BAD 8\n"); }
431 if (5 * 4 / 2 % 3 != 1) { %%stdout.printf("BAD 9\n"); }
432 if (i32(i32(5)) != 5) { %%stdout.printf("BAD 10\n"); }
433 if (!!false) { %%stdout.printf("BAD 11\n"); }
434 if (i32(7) != --(i32(7))) { %%stdout.printf("BAD 12\n"); }
435
436 %%stdout.printf("OK\n");
437437}
438438 )SOURCE", "OK\n");
439439
......@@ -441,19 +441,19 @@ pub fn main(args: [][]u8) -> %void {
441441import "std.zig";
442442
443443pub fn main(args: [][]u8) -> %void {
444 if (true || { stdout.printf("BAD 1\n"); false }) {
445 stdout.printf("OK 1\n");
444 if (true || { %%stdout.printf("BAD 1\n"); false }) {
445 %%stdout.printf("OK 1\n");
446446 }
447 if (false || { stdout.printf("OK 2\n"); false }) {
448 stdout.printf("BAD 2\n");
447 if (false || { %%stdout.printf("OK 2\n"); false }) {
448 %%stdout.printf("BAD 2\n");
449449 }
450450
451 if (true && { stdout.printf("OK 3\n"); false }) {
452 stdout.printf("BAD 3\n");
451 if (true && { %%stdout.printf("OK 3\n"); false }) {
452 %%stdout.printf("BAD 3\n");
453453 }
454 if (false && { stdout.printf("BAD 4\n"); false }) {
454 if (false && { %%stdout.printf("BAD 4\n"); false }) {
455455 } else {
456 stdout.printf("OK 4\n");
456 %%stdout.printf("OK 4\n");
457457 }
458458}
459459 )SOURCE", "OK 1\nOK 2\nOK 3\nOK 4\n");
......@@ -463,20 +463,20 @@ import "std.zig";
463463
464464pub fn main(args: [][]u8) -> %void {
465465 var i : i32 = 0;
466 i += 5; if (i != 5) { stdout.printf("BAD +=\n"); }
467 i -= 2; if (i != 3) { stdout.printf("BAD -=\n"); }
468 i *= 20; if (i != 60) { stdout.printf("BAD *=\n"); }
469 i /= 3; if (i != 20) { stdout.printf("BAD /=\n"); }
470 i %= 11; if (i != 9) { stdout.printf("BAD %=\n"); }
471 i <<= 1; if (i != 18) { stdout.printf("BAD <<=\n"); }
472 i >>= 2; if (i != 4) { stdout.printf("BAD >>=\n"); }
466 i += 5; if (i != 5) { %%stdout.printf("BAD +=\n"); }
467 i -= 2; if (i != 3) { %%stdout.printf("BAD -=\n"); }
468 i *= 20; if (i != 60) { %%stdout.printf("BAD *=\n"); }
469 i /= 3; if (i != 20) { %%stdout.printf("BAD /=\n"); }
470 i %= 11; if (i != 9) { %%stdout.printf("BAD %=\n"); }
471 i <<= 1; if (i != 18) { %%stdout.printf("BAD <<=\n"); }
472 i >>= 2; if (i != 4) { %%stdout.printf("BAD >>=\n"); }
473473 i = 6;
474 i &= 5; if (i != 4) { stdout.printf("BAD &=\n"); }
475 i ^= 6; if (i != 2) { stdout.printf("BAD ^=\n"); }
474 i &= 5; if (i != 4) { %%stdout.printf("BAD &=\n"); }
475 i ^= 6; if (i != 2) { %%stdout.printf("BAD ^=\n"); }
476476 i = 6;
477 i |= 3; if (i != 7) { stdout.printf("BAD |=\n"); }
477 i |= 3; if (i != 7) { %%stdout.printf("BAD |=\n"); }
478478
479 stdout.printf("OK\n");
479 %%stdout.printf("OK\n");
480480}
481481 )SOURCE", "OK\n");
482482
......@@ -620,12 +620,12 @@ pub fn main(args: [][]u8) -> %void {
620620 test_foo(foo);
621621 test_mutation(&foo);
622622 if (foo.c != 100) {
623 stdout.printf("BAD\n");
623 %%stdout.printf("BAD\n");
624624 }
625625 test_point_to_self();
626626 test_byval_assign();
627627 test_initializer();
628 stdout.printf("OK\n");
628 %%stdout.printf("OK\n");
629629}
630630struct Foo {
631631 a : i32,
......@@ -634,7 +634,7 @@ struct Foo {
634634}
635635fn test_foo(foo : Foo) {
636636 if (!foo.b) {
637 stdout.printf("BAD\n");
637 %%stdout.printf("BAD\n");
638638 }
639639}
640640fn test_mutation(foo : &Foo) {
......@@ -659,7 +659,7 @@ fn test_point_to_self() {
659659 root.next = &node;
660660
661661 if (node.next.next.next.val.x != 1) {
662 stdout.printf("BAD\n");
662 %%stdout.printf("BAD\n");
663663 }
664664}
665665fn test_byval_assign() {
......@@ -668,15 +668,15 @@ fn test_byval_assign() {
668668
669669 foo1.a = 1234;
670670
671 if (foo2.a != 0) { stdout.printf("BAD\n"); }
671 if (foo2.a != 0) { %%stdout.printf("BAD\n"); }
672672
673673 foo2 = foo1;
674674
675 if (foo2.a != 1234) { stdout.printf("BAD - byval assignment failed\n"); }
675 if (foo2.a != 1234) { %%stdout.printf("BAD - byval assignment failed\n"); }
676676}
677677fn test_initializer() {
678678 const val = Val { .x = 42 };
679 if (val.x != 42) { stdout.printf("BAD\n"); }
679 if (val.x != 42) { %%stdout.printf("BAD\n"); }
680680}
681681 )SOURCE", "OK\n");
682682
......@@ -687,10 +687,10 @@ const g1 : i32 = 1233 + 1;
687687var g2 : i32 = 0;
688688
689689pub fn main(args: [][]u8) -> %void {
690 if (g2 != 0) { stdout.printf("BAD\n"); }
690 if (g2 != 0) { %%stdout.printf("BAD\n"); }
691691 g2 = g1;
692 if (g2 != 1234) { stdout.printf("BAD\n"); }
693 stdout.printf("OK\n");
692 if (g2 != 1234) { %%stdout.printf("BAD\n"); }
693 %%stdout.printf("OK\n");
694694}
695695 )SOURCE", "OK\n");
696696
......@@ -699,7 +699,7 @@ import "std.zig";
699699pub fn main(args: [][]u8) -> %void {
700700 var i : i32 = 0;
701701 while (i < 4) {
702 stdout.printf("loop\n");
702 %%stdout.printf("loop\n");
703703 i += 1;
704704 }
705705 g();
......@@ -719,7 +719,7 @@ import "std.zig";
719719pub fn main(args: [][]u8) -> %void {
720720 var i : i32 = 0;
721721 while (true) {
722 stdout.printf("loop\n");
722 %%stdout.printf("loop\n");
723723 i += 1;
724724 if (i < 4) {
725725 continue;
......@@ -736,12 +736,12 @@ pub fn main(args: [][]u8) -> %void {
736736
737737 if (const y ?= x) {
738738 if (y) {
739 stdout.printf("x is true\n");
739 %%stdout.printf("x is true\n");
740740 } else {
741 stdout.printf("x is false\n");
741 %%stdout.printf("x is false\n");
742742 }
743743 } else {
744 stdout.printf("x is none\n");
744 %%stdout.printf("x is none\n");
745745 }
746746
747747 const next_x : ?i32 = null;
......@@ -749,7 +749,7 @@ pub fn main(args: [][]u8) -> %void {
749749 const z = next_x ?? 1234;
750750
751751 if (z != 1234) {
752 stdout.printf("BAD\n");
752 %%stdout.printf("BAD\n");
753753 }
754754
755755 const final_x : ?i32 = 13;
......@@ -757,7 +757,7 @@ pub fn main(args: [][]u8) -> %void {
757757 const num = final_x ?? unreachable{};
758758
759759 if (num != 13) {
760 stdout.printf("BAD\n");
760 %%stdout.printf("BAD\n");
761761 }
762762}
763763 )SOURCE", "x is true\n");
......@@ -767,7 +767,7 @@ import "std.zig";
767767pub fn main(args: [][]u8) -> %void {
768768 const x = outer();
769769 if (x == 1234) {
770 stdout.printf("OK\n");
770 %%stdout.printf("OK\n");
771771 }
772772}
773773fn inner() -> i32 { 1234 }
......@@ -782,8 +782,8 @@ const x: u16 = 13;
782782const z: @typeof(x) = 19;
783783pub fn main(args: [][]u8) -> %void {
784784 const y: @typeof(x) = 120;
785 stdout.print_u64(@sizeof(@typeof(y)));
786 stdout.printf("\n");
785 %%stdout.print_u64(@sizeof(@typeof(y)));
786 %%stdout.printf("\n");
787787}
788788 )SOURCE", "2\n");
789789
......@@ -798,9 +798,9 @@ struct Rand {
798798pub fn main(args: [][]u8) -> %void {
799799 const r = Rand {.seed = 1234};
800800 if (r.get_seed() != 1234) {
801 stdout.printf("BAD seed\n");
801 %%stdout.printf("BAD seed\n");
802802 }
803 stdout.printf("OK\n");
803 %%stdout.printf("OK\n");
804804}
805805 )SOURCE", "OK\n");
806806
......@@ -814,12 +814,12 @@ pub fn main(args: [][]u8) -> %void {
814814 *y += 1;
815815
816816 if (x != 4) {
817 stdout.printf("BAD\n");
817 %%stdout.printf("BAD\n");
818818 }
819819 if (*y != 4) {
820 stdout.printf("BAD\n");
820 %%stdout.printf("BAD\n");
821821 }
822 stdout.printf("OK\n");
822 %%stdout.printf("OK\n");
823823}
824824 )SOURCE", "OK\n");
825825
......@@ -830,77 +830,77 @@ const ARRAY_SIZE : i8 = 20;
830830
831831pub fn main(args: [][]u8) -> %void {
832832 var array : [ARRAY_SIZE]u8;
833 stdout.print_u64(@sizeof(@typeof(array)));
834 stdout.printf("\n");
833 %%stdout.print_u64(@sizeof(@typeof(array)));
834 %%stdout.printf("\n");
835835}
836836 )SOURCE", "20\n");
837837
838838 add_simple_case("@min_value() and @max_value()", R"SOURCE(
839839import "std.zig";
840840pub fn main(args: [][]u8) -> %void {
841 stdout.printf("max u8: ");
842 stdout.print_u64(@max_value(u8));
843 stdout.printf("\n");
841 %%stdout.printf("max u8: ");
842 %%stdout.print_u64(@max_value(u8));
843 %%stdout.printf("\n");
844844
845 stdout.printf("max u16: ");
846 stdout.print_u64(@max_value(u16));
847 stdout.printf("\n");
845 %%stdout.printf("max u16: ");
846 %%stdout.print_u64(@max_value(u16));
847 %%stdout.printf("\n");
848848
849 stdout.printf("max u32: ");
850 stdout.print_u64(@max_value(u32));
851 stdout.printf("\n");
849 %%stdout.printf("max u32: ");
850 %%stdout.print_u64(@max_value(u32));
851 %%stdout.printf("\n");
852852
853 stdout.printf("max u64: ");
854 stdout.print_u64(@max_value(u64));
855 stdout.printf("\n");
853 %%stdout.printf("max u64: ");
854 %%stdout.print_u64(@max_value(u64));
855 %%stdout.printf("\n");
856856
857 stdout.printf("max i8: ");
858 stdout.print_i64(@max_value(i8));
859 stdout.printf("\n");
857 %%stdout.printf("max i8: ");
858 %%stdout.print_i64(@max_value(i8));
859 %%stdout.printf("\n");
860860
861 stdout.printf("max i16: ");
862 stdout.print_i64(@max_value(i16));
863 stdout.printf("\n");
861 %%stdout.printf("max i16: ");
862 %%stdout.print_i64(@max_value(i16));
863 %%stdout.printf("\n");
864864
865 stdout.printf("max i32: ");
866 stdout.print_i64(@max_value(i32));
867 stdout.printf("\n");
865 %%stdout.printf("max i32: ");
866 %%stdout.print_i64(@max_value(i32));
867 %%stdout.printf("\n");
868868
869 stdout.printf("max i64: ");
870 stdout.print_i64(@max_value(i64));
871 stdout.printf("\n");
869 %%stdout.printf("max i64: ");
870 %%stdout.print_i64(@max_value(i64));
871 %%stdout.printf("\n");
872872
873 stdout.printf("min u8: ");
874 stdout.print_u64(@min_value(u8));
875 stdout.printf("\n");
873 %%stdout.printf("min u8: ");
874 %%stdout.print_u64(@min_value(u8));
875 %%stdout.printf("\n");
876876
877 stdout.printf("min u16: ");
878 stdout.print_u64(@min_value(u16));
879 stdout.printf("\n");
877 %%stdout.printf("min u16: ");
878 %%stdout.print_u64(@min_value(u16));
879 %%stdout.printf("\n");
880880
881 stdout.printf("min u32: ");
882 stdout.print_u64(@min_value(u32));
883 stdout.printf("\n");
881 %%stdout.printf("min u32: ");
882 %%stdout.print_u64(@min_value(u32));
883 %%stdout.printf("\n");
884884
885 stdout.printf("min u64: ");
886 stdout.print_u64(@min_value(u64));
887 stdout.printf("\n");
885 %%stdout.printf("min u64: ");
886 %%stdout.print_u64(@min_value(u64));
887 %%stdout.printf("\n");
888888
889 stdout.printf("min i8: ");
890 stdout.print_i64(@min_value(i8));
891 stdout.printf("\n");
889 %%stdout.printf("min i8: ");
890 %%stdout.print_i64(@min_value(i8));
891 %%stdout.printf("\n");
892892
893 stdout.printf("min i16: ");
894 stdout.print_i64(@min_value(i16));
895 stdout.printf("\n");
893 %%stdout.printf("min i16: ");
894 %%stdout.print_i64(@min_value(i16));
895 %%stdout.printf("\n");
896896
897 stdout.printf("min i32: ");
898 stdout.print_i64(@min_value(i32));
899 stdout.printf("\n");
897 %%stdout.printf("min i32: ");
898 %%stdout.print_i64(@min_value(i32));
899 %%stdout.printf("\n");
900900
901 stdout.printf("min i64: ");
902 stdout.print_i64(@min_value(i64));
903 stdout.printf("\n");
901 %%stdout.printf("min i64: ");
902 %%stdout.print_i64(@min_value(i64));
903 %%stdout.printf("\n");
904904}
905905 )SOURCE",
906906 "max u8: 255\n"
......@@ -931,19 +931,19 @@ pub fn main(args: [][]u8) -> %void {
931931 var slice = array[5...10];
932932
933933 if (slice.len != 5) {
934 stdout.printf("BAD\n");
934 %%stdout.printf("BAD\n");
935935 }
936936
937937 if (slice.ptr[0] != 1234) {
938 stdout.printf("BAD\n");
938 %%stdout.printf("BAD\n");
939939 }
940940
941941 var slice_rest = array[10...];
942942 if (slice_rest.len != 10) {
943 stdout.printf("BAD\n");
943 %%stdout.printf("BAD\n");
944944 }
945945
946 stdout.printf("OK\n");
946 %%stdout.printf("OK\n");
947947}
948948 )SOURCE", "OK\n");
949949
......@@ -952,7 +952,7 @@ pub fn main(args: [][]u8) -> %void {
952952import "std.zig";
953953pub fn main(args: [][]u8) -> %void {
954954 if (f(1) == 1) {
955 stdout.printf("OK\n");
955 %%stdout.printf("OK\n");
956956 }
957957}
958958fn f(c: u8) -> u8 {
......@@ -971,15 +971,15 @@ import "std.zig";
971971pub fn main(args: [][]u8) -> %void {
972972 var result: u8;
973973 if (!@add_with_overflow(u8, 250, 100, &result)) {
974 stdout.printf("BAD\n");
974 %%stdout.printf("BAD\n");
975975 }
976976 if (@add_with_overflow(u8, 100, 150, &result)) {
977 stdout.printf("BAD\n");
977 %%stdout.printf("BAD\n");
978978 }
979979 if (result != 250) {
980 stdout.printf("BAD\n");
980 %%stdout.printf("BAD\n");
981981 }
982 stdout.printf("OK\n");
982 %%stdout.printf("OK\n");
983983}
984984 )SOURCE", "OK\n");
985985
......@@ -993,10 +993,10 @@ pub fn main(args: [][]u8) -> %void {
993993 @memcpy(bar.ptr, foo.ptr, bar.len);
994994
995995 if (bar[11] != 'A') {
996 stdout.printf("BAD\n");
996 %%stdout.printf("BAD\n");
997997 }
998998
999 stdout.printf("OK\n");
999 %%stdout.printf("OK\n");
10001000}
10011001 )SOURCE", "OK\n");
10021002
......@@ -1009,7 +1009,7 @@ pub fn main(args: [][]u8) -> %void {
10091009 var x : i32 = print_ok(x);
10101010}
10111011fn print_ok(val: @typeof(x)) -> @typeof(foo) {
1012 stdout.printf("OK\n");
1012 %%stdout.printf("OK\n");
10131013 return 0;
10141014}
10151015const foo : i32 = 0;
......@@ -1042,25 +1042,25 @@ pub fn main(args: [][]u8) -> %void {
10421042 const bar = Bar.B;
10431043
10441044 if (bar != Bar.B) {
1045 stdout.printf("BAD\n");
1045 %%stdout.printf("BAD\n");
10461046 }
10471047
10481048 if (@member_count(Foo) != 3) {
1049 stdout.printf("BAD\n");
1049 %%stdout.printf("BAD\n");
10501050 }
10511051
10521052 if (@member_count(Bar) != 4) {
1053 stdout.printf("BAD\n");
1053 %%stdout.printf("BAD\n");
10541054 }
10551055
10561056 if (@sizeof(Foo) != 17) {
1057 stdout.printf("BAD\n");
1057 %%stdout.printf("BAD\n");
10581058 }
10591059 if (@sizeof(Bar) != 1) {
1060 stdout.printf("BAD\n");
1060 %%stdout.printf("BAD\n");
10611061 }
10621062
1063 stdout.printf("OK\n");
1063 %%stdout.printf("OK\n");
10641064}
10651065 )SOURCE", "OK\n");
10661066
......@@ -1071,14 +1071,14 @@ pub fn main(args: [][]u8) -> %void {
10711071 const HEX_MULT = []u16{4096, 256, 16, 1};
10721072
10731073 if (HEX_MULT.len != 4) {
1074 stdout.printf("BAD\n");
1074 %%stdout.printf("BAD\n");
10751075 }
10761076
10771077 if (HEX_MULT[1] != 256) {
1078 stdout.printf("BAD\n");
1078 %%stdout.printf("BAD\n");
10791079 }
10801080
1081 stdout.printf("OK\n");
1081 %%stdout.printf("OK\n");
10821082}
10831083 )SOURCE", "OK\n");
10841084
......@@ -1089,8 +1089,8 @@ pub fn main(args: [][]u8) -> %void {
10891089 const array_of_strings = [][]u8 {"hello", "this", "is", "my", "thing"};
10901090 var i: @typeof(array_of_strings.len) = 0;
10911091 while (i < array_of_strings.len) {
1092 stdout.printf(array_of_strings[i]);
1093 stdout.printf("\n");
1092 %%stdout.printf(array_of_strings[i]);
1093 %%stdout.printf("\n");
10941094 i += 1;
10951095 }
10961096}
......@@ -1102,21 +1102,21 @@ import "std.zig";
11021102pub fn main(args: [][]u8) -> %void {
11031103 const array = []u8 {9, 8, 7, 6};
11041104 for (item, array) {
1105 stdout.print_u64(item);
1106 stdout.printf("\n");
1105 %%stdout.print_u64(item);
1106 %%stdout.printf("\n");
11071107 }
11081108 for (item, array, index) {
1109 stdout.print_i64(index);
1110 stdout.printf("\n");
1109 %%stdout.print_i64(index);
1110 %%stdout.printf("\n");
11111111 }
11121112 const unknown_size: []u8 = array;
11131113 for (item, unknown_size) {
1114 stdout.print_u64(item);
1115 stdout.printf("\n");
1114 %%stdout.print_u64(item);
1115 %%stdout.printf("\n");
11161116 }
11171117 for (item, unknown_size, index) {
1118 stdout.print_i64(index);
1119 stdout.printf("\n");
1118 %%stdout.print_i64(index);
1119 %%stdout.printf("\n");
11201120 }
11211121}
11221122 )SOURCE", "9\n8\n7\n6\n0\n1\n2\n3\n9\n8\n7\n6\n0\n1\n2\n3\n");
......@@ -1127,8 +1127,8 @@ import "std.zig";
11271127pub fn main(args: [][]u8) -> %void {
11281128 const fns = []@typeof(fn1) { fn1, fn2, fn3, fn4, };
11291129 for (f, fns) {
1130 stdout.print_u64(f());
1131 stdout.printf("\n");
1130 %%stdout.print_u64(f());
1131 %%stdout.printf("\n");
11321132 }
11331133}
11341134
......@@ -1157,10 +1157,10 @@ pub fn main(args: [][]u8) -> %void {
11571157 Foo.D => 4,
11581158 };
11591159 if (val != 3) {
1160 stdout.printf("BAD\n");
1160 %%stdout.printf("BAD\n");
11611161 }
11621162
1163 stdout.printf("OK\n");
1163 %%stdout.printf("OK\n");
11641164}
11651165 )SOURCE", "OK\n");
11661166
......@@ -1174,10 +1174,10 @@ pub fn main(args: [][]u8) -> %void {
11741174 const eleven = ten + one;
11751175
11761176 if (eleven != 11) {
1177 stdout.printf("BAD\n");
1177 %%stdout.printf("BAD\n");
11781178 }
11791179
1180 stdout.printf("OK\n");
1180 %%stdout.printf("OK\n");
11811181}
11821182 )SOURCE", "OK\n");
11831183
......@@ -1191,10 +1191,10 @@ var foo = Foo { .x = 13, .y = true, };
11911191pub fn main(args: [][]u8) -> %void {
11921192 foo.x += 1;
11931193 if (foo.x != 14) {
1194 stdout.printf("BAD\n");
1194 %%stdout.printf("BAD\n");
11951195 }
11961196
1197 stdout.printf("OK\n");
1197 %%stdout.printf("OK\n");
11981198}
11991199 )SOURCE", "OK\n");
12001200
......@@ -1204,10 +1204,10 @@ const x = []u8{1,2,3,4};
12041204pub fn main(args: [][]u8) -> %void {
12051205 const y : [4]u8 = x;
12061206 if (y[3] != 4) {
1207 stdout.printf("BAD\n");
1207 %%stdout.printf("BAD\n");
12081208 }
12091209
1210 stdout.printf("OK\n");
1210 %%stdout.printf("OK\n");
12111211}
12121212 )SOURCE", "OK\n");
12131213
......@@ -1219,10 +1219,10 @@ pub fn main(args: [][]u8) -> %void {
12191219 const a = i32(error.err1);
12201220 const b = i32(error.err2);
12211221 if (a == b) {
1222 stdout.printf("BAD\n");
1222 %%stdout.printf("BAD\n");
12231223 }
12241224
1225 stdout.printf("OK\n");
1225 %%stdout.printf("OK\n");
12261226}
12271227 )SOURCE", "OK\n");
12281228
......@@ -1230,7 +1230,7 @@ pub fn main(args: [][]u8) -> %void {
12301230import "std.zig";
12311231pub fn main(args: [][]u8) -> %void {
12321232 while (true) {
1233 stdout.printf("OK\n");
1233 %%stdout.printf("OK\n");
12341234 return;
12351235 }
12361236}
......@@ -1251,9 +1251,9 @@ fn make_foo(x: i32, y: i32) -> Foo {
12511251pub fn main(args: [][]u8) -> %void {
12521252 const foo = make_foo(1234, 5678);
12531253 if (foo.y != 5678) {
1254 stdout.printf("BAD\n");
1254 %%stdout.printf("BAD\n");
12551255 }
1256 stdout.printf("OK\n");
1256 %%stdout.printf("OK\n");
12571257}
12581258 )SOURCE", "OK\n");
12591259
......@@ -1271,12 +1271,12 @@ pub fn main(args: [][]u8) -> %void {
12711271 const a = g(true) %% 3;
12721272 const b = g(false) %% 3;
12731273 if (a != 3) {
1274 stdout.printf("BAD\n");
1274 %%stdout.printf("BAD\n");
12751275 }
12761276 if (b != 10) {
1277 stdout.printf("BAD\n");
1277 %%stdout.printf("BAD\n");
12781278 }
1279 stdout.printf("OK\n");
1279 %%stdout.printf("OK\n");
12801280}
12811281 )SOURCE", "OK\n");
12821282}