summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStuart Halloway <stu@thinkrelevance.com>2010-06-29 23:03:05 -0400
committerStuart Halloway <stu@thinkrelevance.com>2010-06-30 21:33:28 -0400
commitdaed9dfb86a34c362a614f29c259a35d781d6b1e (patch)
tree1b52485cb3da8965ed477202d9ed4741ac3d92bb /src
parent0f4b6495347dc7d9601cc0907d5d08dd861bb3aa (diff)
#391 ok for namespaces to replace their own vars
Signed-off-by: Stuart Halloway <stu@thinkrelevance.com>
Diffstat (limited to 'src')
-rw-r--r--src/jvm/clojure/lang/Namespace.java9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/jvm/clojure/lang/Namespace.java b/src/jvm/clojure/lang/Namespace.java
index 4c557a9a..19369733 100644
--- a/src/jvm/clojure/lang/Namespace.java
+++ b/src/jvm/clojure/lang/Namespace.java
@@ -79,11 +79,14 @@ public Var intern(Symbol sym){
}
private void warnOrFailOnReplace(Symbol sym, Object o, Object v){
- if (o instanceof Var) {
- if (((Var)o).ns != RT.CLOJURE_NS) {
+ if (o instanceof Var)
+ {
+ Namespace ns = ((Var)o).ns;
+ if (ns == this)
+ return;
+ if (ns != RT.CLOJURE_NS)
throw new IllegalStateException(sym + " already refers to: " + o + " in namespace: " + name);
}
- }
RT.errPrintWriter().println("WARNING: " + sym + " already refers to: " + o + " in namespace: " + name
+ ", being replaced by: " + v);
}