C-x C-e renders once and stops at depth 4 and span 8. A field past either comes back as "..." and nothing recovers it from the echo area. Re-rooting the walk at that field renders it from depth 0, so the bound moves with you — that, and not tidiness, is why an inspector is worth having beside the expression evaluator. CIDER keeps its inspector stack on the server because a JVM value can be retained. Nothing here can: a Flan value has no header and the thunk that rendered it is dlclosed the moment it returns. So the stack is a stack of expressions on this side, and going into a field means sending a different one — (.pos b) where the last one was b. It costs a re-evaluation per step, which buys a view that is never stale and is why refresh is a key someone presses rather than a timer. Driven from fixtures, which is also the only way the cases a live program will not hold still for get tested at all.
27 lines
1.3 KiB
Plaintext
27 lines
1.3 KiB
Plaintext
(tests
|
|
(names test_flan test_acceptance test_reload test_agent test_session test_dev test_emacs test_repl test_cider)
|
|
(libraries flan unix)
|
|
; The acceptance programs are part of the test corpus: if the reader, the
|
|
; parser or the checker regresses on them we want to know here, not at the CLI.
|
|
(deps
|
|
(file %{workspace_root}/calc-me.flan)
|
|
(file %{workspace_root}/sand.flan)
|
|
; The raylib bindings, because sand.flan and the FFI case import them and an
|
|
; import reads the directory at build time. sand.flan itself is above: the
|
|
; headless case imports it as a single-file package.
|
|
(glob_files %{workspace_root}/vendor/raylib/*)
|
|
; The dev agent package: its Flan declarations and the C that implements them.
|
|
(glob_files %{workspace_root}/vendor/agent/*)
|
|
; The EDN tokenizer, which programs/edn.flan imports.
|
|
(glob_files %{workspace_root}/vendor/edn/*)
|
|
(glob_files programs/*.flan)
|
|
; The reload primitive's host: a C main that dlopens what Build.shared made.
|
|
(file reload_host.c)
|
|
; test_dev runs the compiler itself: flan dev launches and owns a program.
|
|
(file %{workspace_root}/bin/main.exe)
|
|
; The Emacs client, which test_emacs drives against a real daemon.
|
|
(glob_files %{workspace_root}/emacs/*.el)
|
|
; The WASI host the wasm32 case runs its module under, when no wasmtime or
|
|
; wasmer is installed.
|
|
(file wasm-run.mjs)))
|