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:
parent
7112632f2f
commit
794f60dff2
7 changed files with 52 additions and 152 deletions
|
|
@ -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]])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue