about summary refs log tree commit diff
path: root/lang/zig/while-inline.zig
diff options
context:
space:
mode:
authorNguyễn Gia Phong <mcsinyx@disroot.org>2021-02-28 17:18:03 +0700
committerNguyễn Gia Phong <mcsinyx@disroot.org>2021-02-28 17:18:03 +0700
commitee9b8fc921f48dc893808e1c9dbfbef321aa362c (patch)
tree0d0a5247b139ba68d2c2aa2d94e1d631476dbc62 /lang/zig/while-inline.zig
parent2b91f9554b326aea138bd8a0acbfaa10d9ad59aa (diff)
downloadcp-ee9b8fc921f48dc893808e1c9dbfbef321aa362c.tar.gz
[lang/zig] Learn some Zig
Diffstat (limited to 'lang/zig/while-inline.zig')
-rw-r--r--lang/zig/while-inline.zig20
1 files changed, 20 insertions, 0 deletions
diff --git a/lang/zig/while-inline.zig b/lang/zig/while-inline.zig
new file mode 100644
index 0000000..2af1160
--- /dev/null
+++ b/lang/zig/while-inline.zig
@@ -0,0 +1,20 @@
+const expect = @import("std").testing.expect;
+
+fn typeNameLength(comptime T: type) usize {
+    return @typeName(T).len;
+}
+
+test "inline while loop" {
+    comptime var i = 0;
+    var sum: usize = 0;
+    inline while (i < 3) : (i += 1) {
+        const T = switch (i) {
+            0 => f32,
+            1 => i8,
+            2 => bool,
+            else => unreachable,
+        };
+        sum += typeNameLength(T);
+    }
+    expect(sum == 9);
+}