From 9799ed0559a19a4a4ca8f9835b7b107b9acb1470 Mon Sep 17 00:00:00 2001 From: Yogthos Date: Tue, 2 Jun 2026 20:52:03 -0400 Subject: [PATCH] Phase 3 followup: add core-intern wrapper + core-bindings entry + test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- src/jolt/core.janet | 3 +++ test/compiler-test.janet | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/jolt/core.janet b/src/jolt/core.janet index d3e9f67..a5a3641 100644 --- a/src/jolt/core.janet +++ b/src/jolt/core.janet @@ -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 diff --git a/test/compiler-test.janet b/test/compiler-test.janet index 16e47ee..7ce4680 100644 --- a/test/compiler-test.janet +++ b/test/compiler-test.janet @@ -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")