aboutsummaryrefslogtreecommitdiff
path: root/test/cases/function_pointers.zig
diff options
context:
space:
mode:
Diffstat (limited to 'test/cases/function_pointers.zig')
-rw-r--r--test/cases/function_pointers.zig30
1 files changed, 30 insertions, 0 deletions
diff --git a/test/cases/function_pointers.zig b/test/cases/function_pointers.zig
new file mode 100644
index 0000000000..d48dc0da95
--- /dev/null
+++ b/test/cases/function_pointers.zig
@@ -0,0 +1,30 @@
+const std = @import("std");
+
+const PrintFn = *const fn () void;
+
+pub fn main() void {
+ var printFn: PrintFn = stopSayingThat;
+ var i: u32 = 0;
+ while (i < 4) : (i += 1) printFn();
+
+ printFn = moveEveryZig;
+ printFn();
+}
+
+fn stopSayingThat() void {
+ _ = std.os.write(1, "Hello, my name is Inigo Montoya; you killed my father, prepare to die.\n") catch {};
+}
+
+fn moveEveryZig() void {
+ _ = std.os.write(1, "All your codebase are belong to us\n") catch {};
+}
+
+// run
+// target=x86_64-macos
+//
+// Hello, my name is Inigo Montoya; you killed my father, prepare to die.
+// Hello, my name is Inigo Montoya; you killed my father, prepare to die.
+// Hello, my name is Inigo Montoya; you killed my father, prepare to die.
+// Hello, my name is Inigo Montoya; you killed my father, prepare to die.
+// All your codebase are belong to us
+//