aboutsummaryrefslogtreecommitdiff
path: root/tests/i/integer-boundaries
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.one>2026-10-16 20:57:23 +0800
committer_ov4 <ov4@ov4.one>2026-10-16 20:57:23 +0800
commite1e789ac0249149a4aa1671f5f9260d488cb617a (patch)
tree25a9b27543f8df0186ea1fabd82ec57561d618d7 /tests/i/integer-boundaries
parent670b0d8a4669d939b09b4990be89173805831215 (diff)
test(compiler): expose minimum integer literal corruption
Check the minimum i64 value as a source literal as well as input. Both execution paths currently change it by one without a diagnostic. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Diffstat (limited to 'tests/i/integer-boundaries')
-rw-r--r--tests/i/integer-boundaries/expected.txt1
-rw-r--r--tests/i/integer-boundaries/notes.md2
-rw-r--r--tests/i/integer-boundaries/program.cps1
3 files changed, 4 insertions, 0 deletions
diff --git a/tests/i/integer-boundaries/expected.txt b/tests/i/integer-boundaries/expected.txt
index 5fd67df..b7eb7b8 100644
--- a/tests/i/integer-boundaries/expected.txt
+++ b/tests/i/integer-boundaries/expected.txt
@@ -5,3 +5,4 @@
-1
TRUE:TRUE:TRUE
9223372036854775807:-9223372036854775808:0
+-9223372036854775808
diff --git a/tests/i/integer-boundaries/notes.md b/tests/i/integer-boundaries/notes.md
index b89da97..0a8f6c5 100644
--- a/tests/i/integer-boundaries/notes.md
+++ b/tests/i/integer-boundaries/notes.md
@@ -5,3 +5,5 @@ Human review: pending. Expected output was independently traced by AI, not captu
Basis: Project INTEGER=i64 contract; CIE pp. 7 and 15 do not specify bit width or overflow.
Trace: Inputs are 2^63-1 and -2^63. Every operation stays in range; their sum is -1 and division by 1 preserves both values.
+
+The final line independently exercises the minimum INTEGER as a source literal, rather than only through INPUT. Its exact value must also be -2^63; parsing its positive magnitude before applying unary minus must not silently change the value.
diff --git a/tests/i/integer-boundaries/program.cps b/tests/i/integer-boundaries/program.cps
index c08b658..a4aec33 100644
--- a/tests/i/integer-boundaries/program.cps
+++ b/tests/i/integer-boundaries/program.cps
@@ -9,3 +9,4 @@ OUTPUT Lo + 1
OUTPUT Hi + Lo
OUTPUT Lo < 0, ":", Hi > 0, ":", Lo < Hi
OUTPUT Hi DIV 1, ":", Lo DIV 1, ":", Lo MOD 1
+OUTPUT -9223372036854775808