| author | |
| committer | |
| log | 23bebdbcd51ac426f829713ce278b86ccaeb97f4 |
| tree | 4fe1b3b1dde7723a012fe485f069202bed9772b9 |
| parent | 56cc2e2b24f50975591de02e8a556eee4ac45bf7 |
5 files changed, 67 insertions(+), 57 deletions(-)
test/cases3/fn.zig created+28| ... | ... | @@ -0,0 +1,28 @@ |
| 1 | fn params() { | |
| 2 | @setFnTest(this); | |
| 3 | ||
| 4 | assert(testParamsAdd(22, 11) == 33); | |
| 5 | } | |
| 6 | fn testParamsAdd(a: i32, b: i32) -> i32 { | |
| 7 | a + b | |
| 8 | } | |
| 9 | ||
| 10 | ||
| 11 | fn localVariables() { | |
| 12 | @setFnTest(this); | |
| 13 | ||
| 14 | testLocVars(2); | |
| 15 | } | |
| 16 | fn testLocVars(b: i32) { | |
| 17 | const a: i32 = 1; | |
| 18 | if (a + b != 3) @unreachable(); | |
| 19 | } | |
| 20 | ||
| 21 | ||
| 22 | ||
| 23 | ||
| 24 | // TODO const assert = @import("std").debug.assert; | |
| 25 | fn assert(ok: bool) { | |
| 26 | if (!ok) | |
| 27 | @unreachable(); | |
| 28 | } |
test/cases3/if.zig created+26| ... | ... | @@ -0,0 +1,26 @@ |
| 1 | fn ifStatements() { | |
| 2 | @setFnTest(this); | |
| 3 | ||
| 4 | shouldBeEqual(1, 1); | |
| 5 | firstEqlThird(2, 1, 2); | |
| 6 | } | |
| 7 | fn shouldBeEqual(a: i32, b: i32) { | |
| 8 | if (a != b) { | |
| 9 | @unreachable(); | |
| 10 | } else { | |
| 11 | return; | |
| 12 | } | |
| 13 | } | |
| 14 | fn firstEqlThird(a: i32, b: i32, c: i32) { | |
| 15 | if (a == b) { | |
| 16 | @unreachable(); | |
| 17 | } else if (b == c) { | |
| 18 | @unreachable(); | |
| 19 | } else if (a == c) { | |
| 20 | return; | |
| 21 | } else { | |
| 22 | @unreachable(); | |
| 23 | } | |
| 24 | } | |
| 25 | ||
| 26 |
test/cases3/misc.zig+8| ... | ... | @@ -130,6 +130,14 @@ fn ReturnStringFromFunction() { |
| 130 | 130 | assert(memeql(first4KeysOfHomeRow(), "aoeu")); |
| 131 | 131 | } |
| 132 | 132 | |
| 133 | fn boolLiterals() { | |
| 134 | @setFnTest(this); | |
| 135 | ||
| 136 | assert(true); | |
| 137 | assert(!false); | |
| 138 | } | |
| 139 | ||
| 140 | ||
| 133 | 141 | // TODO import from std.str |
| 134 | 142 | pub fn memeql(a: []const u8, b: []const u8) -> bool { |
| 135 | 143 | sliceEql(u8, a, b) |
test/self_hosted.zig+3-57| ... | ... | @@ -17,68 +17,14 @@ const test_this = @import("cases/this.zig"); |
| 17 | 17 | |
| 18 | 18 | |
| 19 | 19 | |
| 20 | ||
| 21 | fn ifStatements() { | |
| 22 | @setFnTest(this, true); | |
| 23 | ||
| 24 | shouldBeEqual(1, 1); | |
| 25 | firstEqlThird(2, 1, 2); | |
| 26 | } | |
| 27 | fn shouldBeEqual(a: i32, b: i32) { | |
| 28 | if (a != b) { | |
| 29 | @unreachable(); | |
| 30 | } else { | |
| 31 | return; | |
| 32 | } | |
| 33 | } | |
| 34 | fn firstEqlThird(a: i32, b: i32, c: i32) { | |
| 35 | if (a == b) { | |
| 36 | @unreachable(); | |
| 37 | } else if (b == c) { | |
| 38 | @unreachable(); | |
| 39 | } else if (a == c) { | |
| 40 | return; | |
| 41 | } else { | |
| 42 | @unreachable(); | |
| 43 | } | |
| 44 | } | |
| 45 | ||
| 46 | ||
| 47 | fn params() { | |
| 48 | @setFnTest(this, true); | |
| 49 | ||
| 50 | assert(testParamsAdd(22, 11) == 33); | |
| 51 | } | |
| 52 | fn testParamsAdd(a: i32, b: i32) -> i32 { | |
| 53 | a + b | |
| 54 | } | |
| 55 | ||
| 56 | ||
| 57 | fn localVariables() { | |
| 58 | @setFnTest(this, true); | |
| 59 | ||
| 60 | testLocVars(2); | |
| 61 | } | |
| 62 | fn testLocVars(b: i32) { | |
| 63 | const a: i32 = 1; | |
| 64 | if (a + b != 3) @unreachable(); | |
| 65 | } | |
| 66 | ||
| 67 | fn boolLiterals() { | |
| 68 | @setFnTest(this, true); | |
| 69 | ||
| 70 | assert(true); | |
| 71 | assert(!false); | |
| 72 | } | |
| 73 | ||
| 74 | 20 | fn voidParameters() { |
| 75 | @setFnTest(this, true); | |
| 21 | @setFnTest(this); | |
| 76 | 22 | |
| 77 | 23 | voidFun(1, void{}, 2, {}); |
| 78 | 24 | } |
| 79 | fn voidFun(a : i32, b : void, c : i32, d : void) { | |
| 25 | fn voidFun(a: i32, b: void, c: i32, d: void) { | |
| 80 | 26 | const v = b; |
| 81 | const vv : void = if (a == 1) {v} else {}; | |
| 27 | const vv: void = if (a == 1) {v} else {}; | |
| 82 | 28 | assert(a + c == 3); |
| 83 | 29 | return vv; |
| 84 | 30 | } |
test/self_hosted3.zig+2| ... | ... | @@ -4,9 +4,11 @@ const test_defer = @import("cases3/defer.zig"); |
| 4 | 4 | const test_enum = @import("cases3/enum.zig"); |
| 5 | 5 | const test_error = @import("cases3/error.zig"); |
| 6 | 6 | const test_eval = @import("cases3/eval.zig"); |
| 7 | const test_fn = @import("cases3/fn.zig"); | |
| 7 | 8 | const test_for = @import("cases3/for.zig"); |
| 8 | 9 | const test_generics = @import("cases3/generics.zig"); |
| 9 | 10 | const test_goto = @import("cases3/goto.zig"); |
| 11 | const test_if = @import("cases3/if.zig"); | |
| 10 | 12 | const test_import = @import("cases3/import.zig"); |
| 11 | 13 | const test_math = @import("cases3/math.zig"); |
| 12 | 14 | const test_misc = @import("cases3/misc.zig"); |