core: Stage 2 tier 6c — dispatch-table ops + misc compile (macros/plain invokes)
prefer-method/remove-method/remove-all-methods/get-method/methods become overlay macros over ctx-capturing *-setup fns (a multimethod's method table lives on its VAR, so the name passes quoted — the defmulti/defmethod shape). instance? likewise (class names don't evaluate to values); satisfies? is a plain ctx-capturing fn (evaluated args). locking and defonce become overlay macros — locking now also evaluates the monitor expr (the old arm skipped it and any body form past the first); defonce keeps the existing-root check. read-string and macroexpand-1 are ctx-capturing fns. Removed all eleven from the evaluator special arms + special-symbol?, host_iface special-names, and compiler uncompilable-heads. evaluator-test's locking/instance? cases use init now (overlay macros need the full env). Surfaced pre-existing (filed): multimethod dispatch records prefer-method preferences on the var but never consults them in ambiguous isa dispatch. Gate: conformance 296x3 (+11 tier-6c cases), fallback-zero 73/3, fixpoint, self-host, sci, staged, suite 4049>=4034, all specs+unit.
This commit is contained in:
parent
b49cb5c934
commit
719efc56ce
7 changed files with 193 additions and 133 deletions
|
|
@ -64,7 +64,13 @@
|
|||
"(the-ns (quote clojure.core))" "(ns-interns (quote clojure.core))"
|
||||
"(ns-aliases (quote user))" "(ns-imports (quote user))"
|
||||
"(ns-resolve (quote clojure.core) (quote map))" "(resolve (quote map))"
|
||||
"(refer (quote clojure.string))"])
|
||||
"(refer (quote clojure.string))"
|
||||
# Stage 2 tier 6c: dispatch-table ops + misc compile as macros/plain invokes
|
||||
"(prefer-method mf :a :b)" "(remove-method mf :a)" "(remove-all-methods mf)"
|
||||
"(get-method mf :a)" "(methods mf)"
|
||||
"(satisfies? P 5)" "(instance? String \"x\")" "(locking :x 1)"
|
||||
"(defonce fz-once 1)" "(read-string \"[1 2]\")"
|
||||
"(macroexpand-1 (quote (when true 1)))"])
|
||||
|
||||
# --- Intentional fallback (sanity sample): these SHOULD punt to the interpreter.
|
||||
# The remaining frozen/uncompiled set keeps the harness honest in the punt
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue