Phase 1: Var/Namespace system — ns accessors, ns form extensions

- types.janet: all-ns, remove-ns, create-ns, the-ns, ns-interns, ns-aliases, ns-imports-fn
- core.janet: core-binding macro, core-push-thread-bindings, core-pop-thread-bindings
  wired into core-bindings and core-macro-names
- evaluator.janet:
  - ns accessor special forms: all-ns, the-ns, create-ns, remove-ns, ns-interns, ns-aliases, ns-imports, ns-resolve
  - ns form extended: :require/:refer, :use, :refer-clojure/:exclude, :import
  - eval-require extended: :refer support
- compiler-test.janet: Phase 1 tests (ns accessors + ns form extensions)
- pre-existing delimiter fix in core-binding macro brackets

All 317 tests pass, 0 failures.
This commit is contained in:
Yogthos 2026-06-02 17:20:46 -04:00
parent 3ac293c7a5
commit 496f169a2e
6 changed files with 195 additions and 248 deletions

View file

@ -223,3 +223,30 @@
(print " passed")
(print "\nAll compiler tests passed!")
# ============================================================
# 14. Phase 1: ns accessors + ns form extensions
# ============================================================
(print "14: ns accessors...")
(use ../src/jolt/api)
(let [ctx (init)]
(eval-string ctx "(ns mytest.core)")
(def ns-list (eval-string ctx "(all-ns)"))
(assert (> (length ns-list) 0) "all-ns returns namespaces")
# create-ns
(eval-string ctx "(create-ns mytest.extra)")
(def all (eval-string ctx "(all-ns)"))
(assert (> (length all) 1) "create-ns adds namespace"))
(print " passed")
(print "15: ns form extensions...")
(let [ctx (init)]
# ns with :require + :refer
(eval-string ctx "(ns test.ns-ext (:require [clojure.core :refer [inc +]]))")
(assert (= 2 (eval-string ctx "(inc 1)")) "refer inc works"))
(print " passed")
(print "\nAll Phase 1 tests passed!")