core: move binding macro to overlay
Phase 3 batch 6 (jolt-1j0). binding installs an array-map var->value thread frame and restores it on exit via try/finally. Dynamic rebinding is seen by called fns. This completes the cleanly-portable safe macros (19 total). conformance 228/228 x3, full suite green.
This commit is contained in:
parent
394bbe07c3
commit
3dafa60e65
3 changed files with 14 additions and 28 deletions
|
|
@ -68,4 +68,7 @@
|
|||
["condp match" ":two" "(condp = 2 1 :one 2 :two 3 :three)"]
|
||||
["condp default" ":else" "(condp = 9 1 :one 2 :two :else)"]
|
||||
["condp :>> form" "\"got 2\"" "(condp some [1 2 3] #{0 9} :>> (fn [x] (str \"got \" x)) #{2 6} :>> (fn [x] (str \"got \" x)))"]
|
||||
["condp no match" ":threw" "(try (condp = 9 1 :one) (catch :default e :threw))"])
|
||||
["condp no match" ":threw" "(try (condp = 9 1 :one) (catch :default e :threw))"]
|
||||
["binding rebinds" "99" "(do (def ^:dynamic *bx* 10) (binding [*bx* 99] *bx*))"]
|
||||
["binding restores" "10" "(do (def ^:dynamic *by* 10) (binding [*by* 99] *by*) *by*)"]
|
||||
["binding seen by fn" "7" "(do (def ^:dynamic *bz* 0) (defn rdz [] *bz*) (binding [*bz* 7] (rdz)))"])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue