aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/clojure/clojure/contrib/trace.clj11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/main/clojure/clojure/contrib/trace.clj b/src/main/clojure/clojure/contrib/trace.clj
index a38c0383..a75953e7 100644
--- a/src/main/clojure/clojure/contrib/trace.clj
+++ b/src/main/clojure/clojure/contrib/trace.clj
@@ -88,9 +88,10 @@ code is doing."}
expressions in an environment in which the identifiers are bound to
the traced functions. Does not work on inlined functions,
such as clojure.core/+"
- [fn-names & exprs]
- `(binding [~@(interleave fn-names
- (for [func fn-names]
- `(fn [& args#]
- (trace-fn-call '~func (var ~func) args#))))]
+ [fnames & exprs]
+ `(binding [~@(interleave fnames
+ (for [fname fnames]
+ `(let [f# @(var ~fname)]
+ (fn [& args#]
+ (trace-fn-call '~fname f# args#)))))]
~@exprs))