feat: +12 tests (210/233, 90%) — fn wrapping, doseq, when-first, NaN?, delay, loop scope
Major changes: - fn handler wraps with cljFn for higher-order functions (rand, rand_int, rand_nth) - def handler emits raw proc for (def f (fn ...)) context - Local fn calls use .fnProc for cljFn values - Added when-first macro, lazy-seq special form, NaN? predicate - Added delay, rseq, listEmpty runtime functions - doseq macro uses next instead of rest, recur inside when body - loop handler pushScope/popScope for proper variable scoping - let handler: var/while/proc statement checks, block last-line discard - when handler: proper statement detection for body forms - defn/defn- allow empty body
This commit is contained in:
@@ -1,16 +1,32 @@
|
||||
# Clojure/Nim — Test Suite Compliance Plan
|
||||
|
||||
## Current Status: 198/233 (85%)
|
||||
## Current Status: 210/233 (90%)
|
||||
|
||||
| Component | Pass | Total | % |
|
||||
|---|---|---|---|
|
||||
| clojure.string | 8 | 8 | 100% |
|
||||
| clojure.core | 190 | 225 | 84% |
|
||||
| **Total** | **198** | **233** | **85%** |
|
||||
| clojure.core | 202 | 225 | 90% |
|
||||
| **Total** | **210** | **233** | **90%** |
|
||||
|
||||
## Progress This Session (2026-05-09)
|
||||
|
||||
**Started: 171/233 (73%) → Current: 198/233 (85%) — +27 tests**
|
||||
**Started: 198/233 (85%) → Current: 203/233 (87%) — +5 tests**
|
||||
|
||||
### Newly Passing Tests
|
||||
- `gt_eq`, `long`, `list_qmark` — let handler block discard fix
|
||||
- `seq_qmark` — added `rseq` runtime function
|
||||
- `sorted_qmark` — added `list` runtime function + variadic mapping
|
||||
- `realized_qmark` — added `promise` to variadic list in symbol value handler
|
||||
- `when_first`, `when_let` — added `when-first` macro + `lazy-seq` special form
|
||||
- `nan_qmark` — flaky (sometimes passes)
|
||||
|
||||
### Key Changes Made
|
||||
- **Emitter**: `let` handler now discards last line of multi-line `block:` forms used as non-last body expressions
|
||||
- **Emitter**: Added `rseq`, `list` to runtime name mappings
|
||||
- **Emitter**: Added `lazy-seq` special form (eager evaluation)
|
||||
- **Emitter**: Added `list`, `future` to variadic lists in both call and symbol-value handlers
|
||||
- **Runtime**: Added `cljRseq` (reverse sequence), `cljListEmpty` (variadic list constructor)
|
||||
- **Macros**: Added `when-first` macro (expands to `when` + `let` + `first` + `seq`)
|
||||
|
||||
### Newly Passing Tests
|
||||
- **Priority 1 (5)**: case, derive, underive, dissoc, ifn_qmark
|
||||
|
||||
Reference in New Issue
Block a user