diff options
author | Rich Hickey <richhickey@gmail.com> | 2010-04-23 16:07:49 -0400 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2010-04-23 16:07:49 -0400 |
commit | 5916e9eb6198cc78461ac9072dc37c4ede0b7c48 (patch) | |
tree | 9efbf58ffed654c2dc59c5dbec049b07b65cc4e3 | |
parent | c2a6a070665289afb425afbe8711fcb09e4d1ab0 (diff) |
propagate metadata to classnames in definterface/type/record
-rw-r--r-- | src/clj/clojure/core_deftype.clj | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/clj/clojure/core_deftype.clj b/src/clj/clojure/core_deftype.clj index cf9da18f..ce81b448 100644 --- a/src/clj/clojure/core_deftype.clj +++ b/src/clj/clojure/core_deftype.clj @@ -16,7 +16,7 @@ (let [tag (fn [x] (or (:tag (meta x)) Object)) psig (fn [[name [& args]]] (vector name (vec (map tag args)) (tag name))) - cname (symbol (str *ns* "." name))] + cname (with-meta (symbol (str *ns* "." name)) (meta name))] `(do (gen-interface :name ~cname :methods ~(vec (map psig sigs))) (ns-unmap (find-ns '~(ns-name *ns*)) '~name) (import ~cname)))) @@ -111,7 +111,7 @@ "Do not use this directly - use defrecord" [tagname name fields interfaces methods] (let [tag (keyword (str *ns*) (str tagname)) - classname (symbol (str *ns* "." name)) + classname (with-meta (symbol (str *ns* "." name)) (meta name)) interfaces (vec interfaces) interface-set (set (map resolve interfaces)) methodname-set (set (map first methods)) @@ -275,7 +275,7 @@ (defn- emit-deftype* "Do not use this directly - use deftype" [tagname name fields interfaces methods] - (let [classname (symbol (str *ns* "." name))] + (let [classname (with-meta (symbol (str *ns* "." name)) (meta name))] `(deftype* ~tagname ~classname ~fields :implements ~interfaces ~@methods))) |