core: start macro tier — move comment/if-not to the Clojure overlay (jolt-1j0 phase 3)
New 30-macros tier (registered after 20-coll) for user-facing macros expressed as defmacro + syntax-quote instead of hand-built Janet form-transformers. Validated end to end: overlay-defined macros expand in interpret, compile AND self-host modes (conformance 228/228 x3). Moved comment and if-not; removed their Janet core-X fns + core-macro-names entries. Note: Jolt defmacro is single-arity, so multi-arglist macros become one arglist with & rest / destructuring (if-not uses [test then & [else]]). Macros used by the compiler or earlier tiers (and/or/when/cond/case/cond->/->/declare/ doseq/when-let) stay in Janet until a load-order story exists for them. full suite green, clojure-test-suite 3930.
This commit is contained in:
parent
f0e111563b
commit
330a3a23d9
4 changed files with 31 additions and 14 deletions
|
|
@ -25,3 +25,13 @@
|
|||
"(= (gensym) (gensym))"]
|
||||
["gensym# in template" "true"
|
||||
"(do (defmacro m [] `(let [x# 1] x#)) (= 1 (m)))"])
|
||||
|
||||
# Core macros ported from Janet to the Clojure overlay (jolt-1j0 phase 3,
|
||||
# jolt-core/clojure/core/30-macros.clj).
|
||||
(defspec "macros / core-overlay"
|
||||
["if-not true branch" ":then" "(if-not false :then :else)"]
|
||||
["if-not else branch" ":else" "(if-not true :then :else)"]
|
||||
["if-not no else" "nil" "(if-not true :then)"]
|
||||
["if-not no else hit" ":then" "(if-not false :then)"]
|
||||
["comment -> nil" "nil" "(comment a b c)"]
|
||||
["comment in do" "42" "(do (comment ignored) 42)"])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue