Commit 8dc45bc505

Andrew Kelley <superjoe30@gmail.com>
2016-12-22 16:09:53
port more tests
1 parent ba8af0f
test/cases/maybe_return.zig
@@ -1,17 +0,0 @@
-const assert = @import("std").debug.assert;
-
-fn maybeReturn() {
-    @setFnTest(this, true);
-
-    assert(??foo(1235));
-    assert(if (const _ ?= foo(null)) false else true);
-    assert(!??foo(1234));
-}
-
-// TODO test static eval maybe return
-fn foo(x: ?i32) -> ?bool {
-    @setFnStaticEval(this, false);
-
-    const value = ?return x;
-    return value > 1234;
-}
test/cases/return_type_type.zig
@@ -1,22 +0,0 @@
-const assert = @import("std").debug.assert;
-
-pub fn List(inline T: type) -> type {
-    SmallList(T, 8)
-}
-
-pub struct SmallList(inline T: type, inline STATIC_SIZE: usize) {
-    items: []T,
-    length: usize,
-    prealloc_items: [STATIC_SIZE]T,
-}
-
-fn functionWithReturnTypeType() {
-    @setFnTest(this, true);
-
-    var list: List(i32) = undefined;
-    var list2: List(i32) = undefined;
-    list.length = 10;
-    list2.length = 10;
-    assert(list.prealloc_items.len == 8);
-    assert(list2.prealloc_items.len == 8);
-}
test/cases/var_params.zig
@@ -1,35 +0,0 @@
-const assert = @import("std").debug.assert;
-
-fn varParams() {
-    @setFnTest(this, true);
-
-    assert(max_i32(12, 34) == 34);
-    assert(max_f64(1.2, 3.4) == 3.4);
-
-    assert(max_i32_noeval(12, 34) == 34);
-    assert(max_f64_noeval(1.2, 3.4) == 3.4);
-}
-
-fn max(a: var, b: var) -> @typeOf(a) {
-    if (a > b) a else b
-}
-
-fn max_i32(a: i32, b: i32) -> i32 {
-    max(a, b)
-}
-
-fn max_f64(a: f64, b: f64) -> f64 {
-    max(a, b)
-}
-
-fn max_i32_noeval(a: i32, b: i32) -> i32 {
-    @setFnStaticEval(this, false);
-
-    max(a, b)
-}
-
-fn max_f64_noeval(a: f64, b: f64) -> f64 {
-    @setFnStaticEval(this, false);
-
-    max(a, b)
-}
test/cases3/eval.zig
@@ -52,6 +52,25 @@ const statically_added_number = staticAdd(1, 2);
 fn staticAdd(a: i32, b: i32) -> i32 { a + b }
 
 
+fn constExprEvalOnSingleExprBlocks() {
+    @setFnTest(this);
+
+    assert(constExprEvalOnSingleExprBlocksFn(1, true) == 3);
+}
+
+fn constExprEvalOnSingleExprBlocksFn(x: i32, b: bool) -> i32 {
+    const literal = 3;
+
+    const result = if (b) {
+        literal
+    } else {
+        x
+    };
+
+    return result;
+}
+
+
 
 
 
test/cases3/fn.zig
@@ -73,6 +73,19 @@ fn @"weird function name"() {
     @setFnTest(this);
 }
 
+fn implicitCastFnUnreachableReturn() {
+    @setFnTest(this);
+
+    wantsFnWithVoid(fnWithUnreachable);
+}
+
+fn wantsFnWithVoid(f: fn()) { }
+
+fn fnWithUnreachable() -> unreachable {
+    @unreachable()
+}
+
+
 
 // TODO const assert = @import("std").debug.assert;
 fn assert(ok: bool) {
test/cases3/generics.zig
@@ -64,6 +64,30 @@ fn max_f64(a: f64, b: f64) -> f64 {
     max_var(a, b)
 }
 
+
+pub fn List(inline T: type) -> type {
+    SmallList(T, 8)
+}
+
+pub fn SmallList(inline T: type, inline STATIC_SIZE: usize) -> type {
+    struct {
+        items: []T,
+        length: usize,
+        prealloc_items: [STATIC_SIZE]T,
+    }
+}
+
+fn functionWithReturnTypeType() {
+    @setFnTest(this);
+
+    var list: List(i32) = undefined;
+    var list2: List(i32) = undefined;
+    list.length = 10;
+    list2.length = 10;
+    assert(list.prealloc_items.len == 8);
+    assert(list2.prealloc_items.len == 8);
+}
+
 // TODO const assert = @import("std").debug.assert;
 fn assert(ok: bool) {
     if (!ok)
test/cases3/misc.zig
@@ -230,6 +230,18 @@ fn stringEscapes() {
     assert(memeql("\u1234\u0069", "\xe1\x88\xb4\x69"));
 }
 
+fn multilineString() {
+    @setFnTest(this);
+
+    const s1 =
+        \\one
+        \\two)
+        \\three
+    ;
+    const s2 = "one\ntwo)\nthree";
+    assert(memeql(s1, s2));
+}
+
 
 // TODO import from std.str
 pub fn memeql(a: []const u8, b: []const u8) -> bool {
test/cases3/null.zig
@@ -38,6 +38,27 @@ fn assignToIfVarPtr() {
     assert(??maybe_bool == false);
 }
 
+fn rhsMaybeUnwrapReturn() {
+    @setFnTest(this);
+
+    const x: ?bool = true;
+    const y = x ?? return;
+}
+
+
+fn maybeReturn() {
+    @setFnTest(this);
+
+    assert(??foo(1235));
+    assert(if (const _ ?= foo(null)) false else true);
+    assert(!??foo(1234));
+}
+
+// TODO test static eval maybe return
+fn foo(x: ?i32) -> ?bool {
+    const value = ?return x;
+    return value > 1234;
+}
 
 // TODO const assert = @import("std").debug.assert;
 fn assert(ok: bool) {
test/cases/sizeof_and_typeof.zig → test/cases3/sizeof_and_typeof.zig
@@ -1,10 +1,14 @@
-const assert = @import("std").debug.assert;
-
 fn sizeofAndTypeOf() {
-    @setFnTest(this, true);
+    @setFnTest(this);
 
     const y: @typeOf(x) = 120;
     assert(@sizeOf(@typeOf(y)) == 2);
 }
 const x: u16 = 13;
 const z: @typeOf(x) = 19;
+
+// TODO const assert = @import("std").debug.assert;
+fn assert(ok: bool) {
+    if (!ok)
+        @unreachable();
+}
test/self_hosted.zig
@@ -2,36 +2,10 @@ const std = @import("std");
 const assert = std.debug.assert;
 const str = std.str;
 const cstr = std.cstr;
-const test_return_type_type = @import("cases/return_type_type.zig");
-const test_sizeof_and_typeof = @import("cases/sizeof_and_typeof.zig");
-const test_maybe_return = @import("cases/maybe_return.zig");
-const test_var_params = @import("cases/var_params.zig");
 const test_const_slice_child = @import("cases/const_slice_child.zig");
 const test_switch_prong_implicit_cast = @import("cases/switch_prong_implicit_cast.zig");
 const test_switch_prong_err_enum = @import("cases/switch_prong_err_enum.zig");
 const test_enum_with_members = @import("cases/enum_with_members.zig");
-const test_struct_contains_slice_of_itself = @import("cases/struct_contains_slice_of_itself.zig");
-
-
-fn rhsMaybeUnwrapReturn() {
-    @setFnTest(this, true);
-
-    const x = ?true;
-    const y = x ?? return;
-}
-
-
-fn implicitCastFnUnreachableReturn() {
-    @setFnTest(this, true);
-
-    wantsFnWithVoid(fnWithUnreachable);
-}
-
-fn wantsFnWithVoid(f: fn()) { }
-
-fn fnWithUnreachable() -> unreachable {
-    @unreachable()
-}
 
 
 fn explicitCastMaybePointers() {
@@ -42,39 +16,8 @@ fn explicitCastMaybePointers() {
 }
 
 
-fn constExprEvalOnSingleExprBlocks() {
-    @setFnTest(this, true);
-
-    assert(constExprEvalOnSingleExprBlocksFn(1, true) == 3);
-}
-
-fn constExprEvalOnSingleExprBlocksFn(x: i32, b: bool) -> i32 {
-    const literal = 3;
-
-    const result = if (b) {
-        literal
-    } else {
-        x
-    };
-
-    return result;
-}
-
-
-fn multilineString() {
-    @setFnTest(this, true);
-
-    const s1 =
-        \\one
-        \\two)
-        \\three
-    ;
-    const s2 = "one\ntwo)\nthree";
-    assert(str.eql(s1, s2));
-}
-
 fn multilineCString() {
-    @setFnTest(this, true);
+    @setFnTest(this);
 
     const s1 =
         c\\one
test/self_hosted3.zig
@@ -16,8 +16,9 @@ const test_import = @import("cases3/import.zig");
 const test_math = @import("cases3/math.zig");
 const test_misc = @import("cases3/misc.zig");
 const test_null = @import("cases3/null.zig");
+const test_sizeof_and_typeof = @import("cases3/sizeof_and_typeof.zig");
 const test_struct = @import("cases3/struct.zig");
+const test_struct_contains_slice_of_itself = @import("cases3/struct_contains_slice_of_itself.zig");
 const test_switch = @import("cases3/switch.zig");
 const test_this = @import("cases3/this.zig");
 const test_while = @import("cases3/while.zig");
-const test_struct_contains_slice_of_itself = @import("cases3/struct_contains_slice_of_itself.zig");