Smokes: add composite loop canaries (multi-continue, multi-carriers, nested break+continue) under quick/core

This commit is contained in:
nyash-codex
2025-11-02 11:02:45 +09:00
parent 484bea946d
commit eb56783cf3
3 changed files with 62 additions and 0 deletions

View File

@ -0,0 +1,17 @@
#!/bin/bash
# vm_loop_phi_multi_carriers.sh — two loop carriers (fibonacci-like)
source "$(dirname "$0")/../../../lib/test_runner.sh"
require_env || exit 2
preflight_plugins || exit 2
test_multi_carriers_fib6() {
# Fibonacci with 6 steps starting a=0,b=1 => b ends at 13
local code='i=0; a=0; b=1; loop(i<6) { t=a+b; a=b; b=t; i=i+1 }; print(b)'
local out
out=$(run_nyash_vm -c "$code")
[ "$out" = "13" ]
}
run_test "loop_phi_multi_carriers" test_multi_carriers_fib6

View File

@ -0,0 +1,21 @@
#!/bin/bash
# vm_loop_phi_multi_continue.sh — multi-continue paths with single loop carrier
source "$(dirname "$0")/../../../lib/test_runner.sh"
require_env || exit 2
preflight_plugins || exit 2
test_multi_continue_sum() {
# Expect: sum of odd numbers 1..9 except 7 -> 1+3+5+9 = 18
local code='i=0; sum=0; loop(i<10) {
if i%2==0 { i=i+1; continue }
if i==7 { i=i+1; continue }
sum=sum+i; i=i+1
}; print(sum)'
local out
out=$(run_nyash_vm -c "$code")
[ "$out" = "18" ]
}
run_test "loop_phi_multi_continue" test_multi_continue_sum

View File

@ -0,0 +1,24 @@
#!/bin/bash
# vm_nested_mixed_break_continue.sh — nested loops with mixed break/continue
source "$(dirname "$0")/../../../lib/test_runner.sh"
require_env || exit 2
preflight_plugins || exit 2
test_nested_mixed() {
# Outer i=0..4, inner j=0..4, skip j==2 (continue), break inner entirely when i==3.
# Counts per i: 0->4, 1->4, 2->4, 3->0 (break), 4->4 => total 16
local code='i=0; sum=0; loop(i<5) {
j=0; loop(j<5) {
if j==2 { j=j+1; continue }
if i==3 { break }
sum=sum+1; j=j+1
}; i=i+1
}; print(sum)'
local out
out=$(run_nyash_vm -c "$code")
[ "$out" = "16" ]
}
run_test "nested_mixed_break_continue" test_nested_mixed