Commit 358d699fa9

Andrew Kelley <superjoe30@gmail.com>
2015-12-08 23:46:36
add test for arrays
1 parent e855081
Changed files (2)
example
arrays
test
example/arrays/arrays.zig
@@ -7,9 +7,35 @@ extern {
 }
 
 export fn _start() -> unreachable {
-    let mut array : [i32; 10];
+    let mut array : [i32; 5];
 
-    array[4] = array[1] + 5;
+    let mut i = 0;
+loop_start:
+    if i == 5 {
+        goto loop_end;
+    }
+    array[i] = i + 1;
+    i = array[i];
+    goto loop_start;
+
+loop_end:
+
+    i = 0;
+    let mut accumulator = 0;
+loop_2_start:
+    if i == 5 {
+        goto loop_2_end;
+    }
+
+    accumulator = accumulator + array[i];
+
+    i = i + 1;
+    goto loop_2_start;
+loop_2_end:
+
+    if accumulator == 15 {
+        puts("OK");
+    }
 
     exit(0);
 }
test/run_tests.cpp
@@ -355,6 +355,48 @@ done:
     exit(0);
 }
     )SOURCE", "zero\nloop\nloop\nloop\n");
+
+    add_simple_case("arrays", R"SOURCE(
+#link("c")
+extern {
+    fn puts(s: *const u8) -> i32;
+    fn exit(code: i32) -> unreachable;
+}
+
+export fn _start() -> unreachable {
+    let mut array : [i32; 5];
+
+    let mut i = 0;
+loop_start:
+    if i == 5 {
+        goto loop_end;
+    }
+    array[i] = i + 1;
+    i = array[i];
+    goto loop_start;
+
+loop_end:
+
+    i = 0;
+    let mut accumulator = 0;
+loop_2_start:
+    if i == 5 {
+        goto loop_2_end;
+    }
+
+    accumulator = accumulator + array[i];
+
+    i = i + 1;
+    goto loop_2_start;
+loop_2_end:
+
+    if accumulator == 15 {
+        puts("OK");
+    }
+
+    exit(0);
+}
+    )SOURCE", "OK\n");
 }
 
 static void add_compile_failure_test_cases(void) {