fix: vendor/sci submodule, defrecord fix, all tests pass

- Add SCI as git submodule at vendor/sci (replaces absolute path)
- Fix defrecord macro: emit array-map at expansion time, no interleave dep
- Remove stale test files (test-ctor, test-parser, edamame_shim)
- All 317 SCI forms load with 0 failures, 9 test suites green
This commit is contained in:
Yogthos 2026-06-02 09:48:52 -04:00
parent 7112632f2f
commit 794f60dff2
7 changed files with 52 additions and 152 deletions

View file

@ -756,14 +756,17 @@
(defn core-defrecord [name-sym fields-vec & body]
(def ctor-name-str (string "->" (name-sym :name)))
(def ctor-name-sym {:jolt/type :symbol :ns nil :name ctor-name-str})
(def fnames (map |(keyword ($ :name)) fields-vec))
# Build the map expression at macro-expansion time: {"":a a, ":b b, ...}
(var kvs @[])
(each f fields-vec
(array/push kvs (keyword (f :name)))
(array/push kvs f))
(def map-expr @[{:jolt/type :symbol :ns nil :name "array-map"} ;kvs])
(def ctor-body
@[{:jolt/type :symbol :ns nil :name "fn*"}
@[fields-vec]
@[{:jolt/type :symbol :ns nil :name "let*"}
@[{:jolt/type :symbol :ns nil :name "m"} @[{:jolt/type :symbol :ns nil :name "hash-map"} ;(interleave fnames fields-vec)]]
{:jolt/type :symbol :ns nil :name "m"}]])
# Emit (do (def TypeName <ctor-fn>))
map-expr])
# Emit (do (def TypeName <ctor-fn>) (def ->TypeName <ctor-fn>))
@[{:jolt/type :symbol :ns nil :name "do"}
@[{:jolt/type :symbol :ns nil :name "def"} name-sym ctor-body]
@[{:jolt/type :symbol :ns nil :name "def"} ctor-name-sym ctor-body]])