diff options
author | Rich Hickey <richhickey@gmail.com> | 2008-04-08 14:12:42 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2008-04-08 14:12:42 +0000 |
commit | 06ca71ac1978472c9cf740298b517af13b1b45e8 (patch) | |
tree | 639ccbd25988c583e68fadd3b65b6ca29960e988 | |
parent | ad1efab1ade0d675d15ea51648860e74c6be2b14 (diff) |
pushThreadBindings now precedes try that pops them in binding and with-local-vars
-rw-r--r-- | src/boot.clj | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/boot.clj b/src/boot.clj index 977e9c7e..a395590d 100644 --- a/src/boot.clj +++ b/src/boot.clj @@ -827,11 +827,12 @@ (recur (conj (conj ret `(var ~(first vvs))) (second vvs)) (rest (rest vvs))) (seq ret))))] - `(try - (. clojure.lang.Var (pushThreadBindings (hash-map ~@(var-ize bindings)))) - ~@body - (finally - (. clojure.lang.Var (popThreadBindings)))))) + `(do + (. clojure.lang.Var (pushThreadBindings (hash-map ~@(var-ize bindings)))) + (try + ~@body + (finally + (. clojure.lang.Var (popThreadBindings))))))) (defn find-var "Returns the global var named by the namespace-qualified symbol, or @@ -1802,8 +1803,8 @@ not-every? (comp not every?)) [name-vals-vec & body] `(let [~@(interleave (take-nth 2 name-vals-vec) (repeat '(. clojure.lang.Var (create))))] + (. clojure.lang.Var (pushThreadBindings (hash-map ~@name-vals-vec))) (try - (. clojure.lang.Var (pushThreadBindings (hash-map ~@name-vals-vec))) ~@body (finally (. clojure.lang.Var (popThreadBindings)))))) |