summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2010-04-23 16:07:49 -0400
committerRich Hickey <richhickey@gmail.com>2010-04-23 16:07:49 -0400
commit5916e9eb6198cc78461ac9072dc37c4ede0b7c48 (patch)
tree9efbf58ffed654c2dc59c5dbec049b07b65cc4e3
parentc2a6a070665289afb425afbe8711fcb09e4d1ab0 (diff)
propagate metadata to classnames in definterface/type/record
-rw-r--r--src/clj/clojure/core_deftype.clj6
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)))