diff options
-rw-r--r-- | src/main/clojure/clojure/contrib/trace.clj | 11 |
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)) |