From 5916e9eb6198cc78461ac9072dc37c4ede0b7c48 Mon Sep 17 00:00:00 2001 From: Rich Hickey Date: Fri, 23 Apr 2010 16:07:49 -0400 Subject: [PATCH] propagate metadata to classnames in definterface/type/record --- src/clj/clojure/core_deftype.clj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/clj/clojure/core_deftype.clj b/src/clj/clojure/core_deftype.clj index cf9da18ff2..ce81b44882 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)))