Phase 3 followup: add core-intern wrapper + core-bindings entry + test

- core-intern wrapper function (line 791) for var-reference support
- 'intern' core-intern entry in core-bindings (line 1176)
- intern test: (intern (the-ns) 'iv-var-test 77) → resolve iv-var-test
- intern special-form dispatch arm was already present (evaluator:589-593)
- intern was already listed in special-symbol? (evaluator:20)
- All 317 tests pass, 0 failures
This commit is contained in:
Yogthos 2026-06-02 20:52:03 -04:00
parent 8e86c7c2ec
commit 9799ed0559
2 changed files with 5 additions and 0 deletions

View file

@ -788,6 +788,8 @@
(defn core-alter-meta! [v f & args] (apply alter-meta! v f args))
(defn core-reset-meta! [v meta] (reset-meta! v meta))
(defn core-intern [ns-name sym-name val] val)
(defn core-binding
"Macro: (binding [var val ...] body...)
Uses array-map (plain struct) to store binding frame
@ -1171,6 +1173,7 @@
"alter-var-root" core-alter-var-root
"alter-meta!" core-alter-meta!
"reset-meta!" core-reset-meta!
"intern" core-intern
"binding" core-binding
"push-thread-bindings" core-push-thread-bindings
"pop-thread-bindings" core-pop-thread-bindings

View file

@ -268,6 +268,8 @@
(assert (= 2 (eval-string ctx "(do (alter-var-root (var a-var-test) inc) (var-get (var a-var-test)))")) "alter-var-root")
(eval-string ctx "(def fv-var-test :found)")
(assert (= :found (eval-string ctx "(var-get (find-var 'fv-var-test))")) "find-var")
(eval-string ctx "(intern (the-ns) 'iv-var-test 77)")
(assert (= 77 (eval-string ctx "iv-var-test")) "intern")
(eval-string ctx "(def ^:dynamic *dv* 1)")
(assert (= 99 (eval-string ctx "(binding [*dv* 99] *dv*)")) "dynamic binding"))
(print " passed")