summaryrefslogtreecommitdiff
path: root/src/jvm/clojure/lang/Symbol.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jvm/clojure/lang/Symbol.java')
-rw-r--r--src/jvm/clojure/lang/Symbol.java16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/jvm/clojure/lang/Symbol.java b/src/jvm/clojure/lang/Symbol.java
index 43b05788..dcbce7b2 100644
--- a/src/jvm/clojure/lang/Symbol.java
+++ b/src/jvm/clojure/lang/Symbol.java
@@ -13,7 +13,7 @@
package clojure.lang;
-public class Symbol extends Obj{
+public class Symbol extends Obj implements Comparable{
//these must be interned strings!
public final String ns;
public final String name;
@@ -77,4 +77,18 @@ private Symbol(IPersistentMap meta, String ns, String name){
this.ns = ns;
this.hash = RT.hashCombine(name.hashCode(), RT.hash(ns));
}
+
+public int compareTo(Object o){
+ Symbol s = (Symbol) o;
+ if(this.equals(o))
+ return 0;
+ if(this.ns == null && s.ns != null)
+ return -1;
+ if(this.ns != null && s.ns == null)
+ return 1;
+ int nsc = this.name.compareTo(s.name);
+ if(nsc != 0)
+ return nsc;
+ return this.name.compareTo(s.name);
+}
}