diff options
Diffstat (limited to 'src/jvm/clojure/lang/Symbol.java')
-rw-r--r-- | src/jvm/clojure/lang/Symbol.java | 11 |
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; +} } |