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.java11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/jvm/clojure/lang/Symbol.java b/src/jvm/clojure/lang/Symbol.java
index 001043d9..dbf3b36e 100644
--- a/src/jvm/clojure/lang/Symbol.java
+++ b/src/jvm/clojure/lang/Symbol.java
@@ -16,11 +16,12 @@ import java.io.Serializable;
import java.io.ObjectStreamException;
-public class Symbol extends AFn implements Comparable, Named, Serializable{
+public class Symbol extends AFn implements IObj, Comparable, Named, Serializable{
//these must be interned strings!
final String ns;
final String name;
final int hash;
+final IPersistentMap _meta;
public String toString(){
if(ns != null)
@@ -60,6 +61,7 @@ private Symbol(String ns_interned, String name_interned){
this.name = name_interned;
this.ns = ns_interned;
this.hash = Util.hashCombine(name.hashCode(), Util.hash(ns));
+ this._meta = null;
}
public boolean equals(Object o){
@@ -78,14 +80,14 @@ public int hashCode(){
return hash;
}
-public Obj withMeta(IPersistentMap meta){
+public IObj withMeta(IPersistentMap meta){
return new Symbol(meta, ns, name);
}
private Symbol(IPersistentMap meta, String ns, String name){
- super(meta);
this.name = name;
this.ns = ns;
+ this._meta = meta;
this.hash = Util.hashCombine(name.hashCode(), Util.hash(ns));
}
@@ -118,4 +120,7 @@ public Object invoke(Object obj, Object notFound) throws Exception{
return RT.get(obj, this, notFound);
}
+public IPersistentMap meta(){
+ return _meta;
+}
}