summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-25 14:38:28 +0000
committerZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-25 14:38:28 +0000
commit8b720543f538862796fec0ff6b7ea12cb140bf0f (patch)
tree0f4a20d305842ffed01cdd9536fd937d82cd76d4 /tests
parent0bd7b99fbf813415b9a0217eaa2a4e8f6f74e1ea (diff)
Fix for #90
Diffstat (limited to 'tests')
-rw-r--r--tests/functions/test_raw_func_ptr.zc27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/functions/test_raw_func_ptr.zc b/tests/functions/test_raw_func_ptr.zc
new file mode 100644
index 0000000..16ec7df
--- /dev/null
+++ b/tests/functions/test_raw_func_ptr.zc
@@ -0,0 +1,27 @@
+
+fn print_msg(msg: char*) {
+ puts(msg);
+}
+
+fn run_callback(cb: fn*(char*), arg: char*) {
+ cb(arg);
+}
+
+fn get_printer() -> fn*(char*) {
+ return print_msg;
+}
+
+test "raw_func_ptr_basic" {
+ run_callback(print_msg, "Hello Raw Ptr");
+}
+
+test "raw_func_ptr_return_explicit" {
+ var p: fn*(char*) = get_printer();
+ p("Returned Ptr Explicit works");
+}
+
+test "fn_ptr_ptr" {
+ var p: fn*(char*) = print_msg;
+ var pp: fn**(char*) = &p;
+ (*pp)("Double Pointer works");
+}