local-array-bug.mod 607 B

123456789101112131415161718
  1. MODULE local_array_bug;
  2. (* Repro: a local ARRAY inside a PROCEDURE is miscompiled by V3.
  3. Expected exit 60; observed 1 (as of v3-ast-slice5, 2026-10-03).
  4. Found while self-hosting the two-phase statement AST (IfStat used a
  5. local ARRAY OF AST.Node); moved to module scope to keep the fixpoint
  6. green. Module-level arrays work; local ones do not. *)
  7. VAR ExitCode : INTEGER;
  8. PROCEDURE P;
  9. VAR a : ARRAY [0..3] OF INTEGER; i : INTEGER;
  10. BEGIN
  11. i := 0;
  12. WHILE i < 4 DO a[i] := i * 10; INC(i) END;
  13. ExitCode := a[0] + a[1] + a[2] + a[3] (* 0+10+20+30 = 60 *)
  14. END P;
  15. BEGIN P END local_array_bug.