summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-04-08 14:12:42 +0000
committerRich Hickey <richhickey@gmail.com>2008-04-08 14:12:42 +0000
commit06ca71ac1978472c9cf740298b517af13b1b45e8 (patch)
tree639ccbd25988c583e68fadd3b65b6ca29960e988 /src
parentad1efab1ade0d675d15ea51648860e74c6be2b14 (diff)
pushThreadBindings now precedes try that pops them in binding and with-local-vars
Diffstat (limited to 'src')
-rw-r--r--src/boot.clj13
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))))))