summaryrefslogtreecommitdiff
path: root/tests/ptr_arithmetic.toc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ptr_arithmetic.toc')
-rw-r--r--tests/ptr_arithmetic.toc33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/ptr_arithmetic.toc b/tests/ptr_arithmetic.toc
new file mode 100644
index 0000000..05975e8
--- /dev/null
+++ b/tests/ptr_arithmetic.toc
@@ -0,0 +1,33 @@
+#include "std/io.toc";
+#include "std/mem.toc";
+
+ptr_arithmetic_test ::= fn() total := 0 {
+ foo := news(int, 10);
+ for p, i := &foo {
+ *p = i;
+ }
+ p := &foo[0];
+
+ p += 2;
+ total += *p;
+ total += *(p + 3);
+ total += *(p - 1);
+
+ voidp : &void = &foo[7];
+ total += *(voidp as &int);
+ voidp = voidp + 8;
+ total += *(voidp as &int);
+ voidp += 8;
+ total += *(voidp as &int);
+ voidp = voidp - 8;
+ total += *(voidp as &int);
+ voidp -= 8;
+ total += *(voidp as &int);
+}
+
+main ::= fn() {
+ x ::= ptr_arithmetic_test();
+ y := ptr_arithmetic_test();
+ puti(x);
+ puti(y);
+}