about summary refs log tree commit diff
path: root/lang/zig/while-inline.zig
diff options
context:
space:
mode:
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);
+}