feat: load SCI's pure-Clojure modules + adapt remaining core vars; fix defmethod

Load SCI's macro/expander modules from real source (destructure, doseq_macro,
for_macro, fns, multimethods) in the test harness — all load with 0 failures,
which resolved the sci-internal refs (doseq-macro/expand-doseq, fns/fn**, ...)
that previously blocked namespaces.cljc.

Add the remaining clojure.core vars, adapting JVM-isms to the Janet runtime:
enumeration-seq/iterator-seq -> plain seq, xml-seq -> tree walk, subseq/rsubseq
over sorted colls, char-escape-string/char-name-string, line-seq; resolve-only
for genuinely-JVM bean/proxy/print-method/print-dup/undefined?.

Fix a real defmethod bug: it errored when the multimethod symbol resolved to a
plain fn with no method table (e.g. a copy-core-var'd print-method) — now it
initializes the table, so (defmethod print-method T ...) works.

SCI load: 420/422 forms (was 390/392); only the two keystone aggregation maps
in namespaces.cljc remain. conformance 218/218, features 78/78, jank 120.
This commit is contained in:
Yogthos 2026-06-04 20:39:31 -04:00
parent 74ac197e9d
commit dd51322ff1
3 changed files with 78 additions and 1 deletions

View file

@ -61,6 +61,12 @@
["impl/records.cljc" nil]
["impl/core_protocols.cljc" nil]
["impl/hierarchies.cljc" nil]
# pure-Clojure macro/expander modules (loadable from SCI's real source)
["impl/destructure.cljc" nil]
["impl/doseq_macro.cljc" nil]
["impl/for_macro.cljc" nil]
["impl/fns.cljc" nil]
["impl/multimethods.cljc" nil]
["impl/namespaces.cljc" nil]
["core.cljc" nil]
])