Files

1.6 KiB
Raw Permalink Blame History

Nyash Syntax Torture (10 minimal repros)

Date: 2025-09-16

Purpose: stress parser → AST → MIR(Core-13/PURE) → Interpreter/VM/LLVM(AOT) consistency. Each test is one phenomenon per file, tiny and deterministic.

How to run (suggested)

# 1) Run all modes and compare outputs
bash run_spec_smoke.sh

# 2) PURE mode (surface MIR violations):
NYASH_MIR_CORE13_PURE=1 bash run_spec_smoke.sh

# 3) Extra logging when a case fails:
NYASH_VM_STATS=1 NYASH_VM_STATS_JSON=1 NYASH_VM_DEBUG_BOXCALL=1 bash run_spec_smoke.sh
# For LLVM diagnostics (when applicable):
# NYASH_LLVM_VINVOKE_TRACE=1 NYASH_LLVM_VINVOKE_PREFER_I64=1 bash run_spec_smoke.sh

Expected outputs (goldens)

We deliberately print a single line per test to make diffing trivial. See inline comments in each *.hako.

File list

  1. 01_ops_assoc.hako operator associativity & coercion order
  2. 02_deep_parens.hako deep parentheses & arithmetic nesting
  3. 03_array_map_nested.hako nested array/map literal & access
  4. 04_map_array_mix.hako object/array cross indexing & updates
  5. 05_string_concat_unicode.hako string/number/Unicode concatenation
  6. 06_control_flow_loopform.hako break/continue/dispatch shape
  7. 07_await_nowait_mix.hako nowait/await interleave determinism
  8. 08_visibility_access.hako private/public & override routing
  9. 09_lambda_closure_scope.hako closure capture & shadowing
  10. 10_match_result_early_return.hako early return vs. branch merge

CI hint

  • Add this suite before your self-host smokes:
    • make spec-smoke -> make smoke-selfhost
  • Fail fast on any diff across Interpreter/VM/LLVM.