From f9d970a0535ec3ae4aaff6842788a89b139cfdaa Mon Sep 17 00:00:00 2001 From: Leo Tenenbaum Date: Fri, 1 May 2020 17:48:09 -0400 Subject: made output for void pointer arithmetic standard-compliant --- tests/ptr_arithmetic.toc | 33 +++++++++++++++++++++++++++++++++ tests/ptr_arithmetic_expected | 2 ++ tests/test.sh | 1 + 3 files changed, 36 insertions(+) create mode 100644 tests/ptr_arithmetic.toc create mode 100644 tests/ptr_arithmetic_expected (limited to 'tests') 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); +} diff --git a/tests/ptr_arithmetic_expected b/tests/ptr_arithmetic_expected new file mode 100644 index 0000000..930ba1a --- /dev/null +++ b/tests/ptr_arithmetic_expected @@ -0,0 +1,2 @@ +47 +47 diff --git a/tests/test.sh b/tests/test.sh index 75697ef..bf58042 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -4,6 +4,7 @@ tests='bf control_flow types arrs_slices +ptr_arithmetic defer sizeof new -- cgit v1.2.3