Chez Phase 2 (inc T): class native + bare class-token resolution (jolt-13zk)
Bare class names (String, Keyword, File...) evaluate to their JVM canonical-name string, the same value (class x) returns, so (= String (class "x")) holds and (defmethod m String ...) keys match a (class ...) dispatch. New host/chez/host-class.ss ports eval_resolve.janet's class-canonical-names + core_refs.janet's core-class (scalar arms; collections/seqs are host-taxonomy-dependent and not class- compared in the corpus). The analyzer already resolves these names to clojure.core vars (the seed ctx interns them via setup-class-ctors), so the back end emits (var-deref "clojure.core" "String") and a runtime def-var! is all that's needed -- no analyzer change, Janet path untouched. The class native MUST land together with token resolution: alone it turns the bare-token corpus cases (562/564) into divergences (this bit last session). Parity 2154 -> 2163 (cases 560/562/563/564/2500-2503), 0 new divergences. New test/chez/_class.janet 19/19.
This commit is contained in:
parent
b7864100cb
commit
3319684a38
5 changed files with 124 additions and 1 deletions
|
|
@ -22,6 +22,7 @@
|
|||
"host/chez/atoms.ss" "host/chez/predicates.ss" "host/chez/regex.ss"
|
||||
"host/chez/ns.ss" "host/chez/post-prelude.ss" "host/chez/natives-meta.ss"
|
||||
"host/chez/natives-str.ss" "host/chez/records.ss"
|
||||
"host/chez/host-class.ss"
|
||||
"host/chez/host-static.ss" "host/chez/dot-forms.ss"
|
||||
"src/jolt/clojure/string.clj"]
|
||||
(array/push parts (slurp f)))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue