diff options
author | Stuart Halloway <stu@thinkrelevance.com> | 2010-05-19 21:16:31 -0400 |
---|---|---|
committer | Stuart Halloway <stu@thinkrelevance.com> | 2010-05-20 21:26:35 -0400 |
commit | 9c367ff0e3848482b441f3119dc4ad1c400baaf2 (patch) | |
tree | d575d46e34c2f55e9b0292c60fc6090887ca0db9 | |
parent | 56dd2cd8714e30d85a215d520b0248f4783fbbbd (diff) |
clear macro meta #352
Signed-off-by: Stuart Halloway <stu@thinkrelevance.com>
-rw-r--r-- | src/jvm/clojure/lang/Var.java | 8 | ||||
-rw-r--r-- | test/clojure/test_clojure/rt.clj | 7 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/jvm/clojure/lang/Var.java b/src/jvm/clojure/lang/Var.java index ca429749..12114222 100644 --- a/src/jvm/clojure/lang/Var.java +++ b/src/jvm/clojure/lang/Var.java @@ -240,7 +240,7 @@ synchronized public void bindRoot(Object root){ this.root = root; try { - alterMeta(assoc, RT.list(macroKey, RT.F)); + alterMeta(dissoc, RT.list(macroKey)); } catch (Exception e) { @@ -488,4 +488,10 @@ static IFn assoc = new AFn(){ return RT.assoc(m, k, v); } }; +static IFn dissoc = new AFn() { + @Override + public Object invoke(Object c, Object k) throws Exception { + return RT.dissoc(c, k); + } +}; } diff --git a/test/clojure/test_clojure/rt.clj b/test/clojure/test_clojure/rt.clj index 007bf811..3a63c029 100644 --- a/test/clojure/test_clojure/rt.clj +++ b/test/clojure/test_clojure/rt.clj @@ -65,3 +65,10 @@ (should-print-err-message #"Reflection warning, clojure/test_clojure/rt.clj:\d+ - call to java.lang.String ctor can't be resolved.\n" (defn foo [] (String. 1 2 3))))) + +(def example-var) +(deftest binding-root-clears-macro-metadata + (alter-meta! #'example-var assoc :macro true) + (is (contains? (meta #'example-var) :macro)) + (.bindRoot #'example-var 0) + (is (not (contains? (meta #'example-var) :macro)))) |