diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/genclass.clj | 4 | ||||
-rw-r--r-- | src/jvm/clojure/lang/APersistentSet.java | 6 | ||||
-rw-r--r-- | src/jvm/clojure/lang/IPersistentSet.java | 1 | ||||
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 5 |
4 files changed, 10 insertions, 6 deletions
diff --git a/src/genclass.clj b/src/genclass.clj index c63da8fd..6a305cdc 100644 --- a/src/genclass.clj +++ b/src/genclass.clj @@ -91,7 +91,7 @@ :init name If supplied, names a function that will be called with the arguments - to the constructor. Must return [[superclass-constructor-args] state] + to the constructor. Must return [ [superclass-constructor-args] state] If not supplied, the constructor args are passed directly to the superclass constructor and the state will be nil @@ -104,7 +104,7 @@ constructor signature. When you supply this, you must supply an :init specifier. - :methods [[name [param-types] return-type], ...] + :methods [ [name [param-types] return-type], ...] The generated class automatically defines all of the non-private methods of its superclasses/interfaces. This parameter can be used diff --git a/src/jvm/clojure/lang/APersistentSet.java b/src/jvm/clojure/lang/APersistentSet.java index a3fffa70..e0c5400a 100644 --- a/src/jvm/clojure/lang/APersistentSet.java +++ b/src/jvm/clojure/lang/APersistentSet.java @@ -28,6 +28,10 @@ public boolean contains(Object key){ return impl.containsKey(key); } +public Object get(Object key){ + return impl.valAt(key); +} + public int count(){ return impl.count(); } @@ -37,7 +41,7 @@ public ISeq seq(){ } public Object invoke(Object arg1) throws Exception{ - return contains(arg1) ? arg1 : null; + return get(arg1); } public boolean equals(Object obj){ diff --git a/src/jvm/clojure/lang/IPersistentSet.java b/src/jvm/clojure/lang/IPersistentSet.java index 0aeebf06..00bccc52 100644 --- a/src/jvm/clojure/lang/IPersistentSet.java +++ b/src/jvm/clojure/lang/IPersistentSet.java @@ -15,4 +15,5 @@ package clojure.lang; public interface IPersistentSet extends IPersistentCollection{ public IPersistentSet disjoin(Object key) throws Exception; public boolean contains(Object key); + public Object get(Object key); } diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index d52fe02a..6784e4aa 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -470,8 +470,7 @@ static public Object get(Object coll, Object key){ else if(coll instanceof IPersistentSet) { IPersistentSet set = (IPersistentSet) coll; - if(set.contains(key)) - return key; + return set.get(key); } else if(key instanceof Number && (coll instanceof String || coll.getClass().isArray())) { @@ -501,7 +500,7 @@ static public Object get(Object coll, Object key, Object notFound){ { IPersistentSet set = (IPersistentSet) coll; if(set.contains(key)) - return key; + return set.get(key); return notFound; } else if(key instanceof Number && (coll instanceof String || coll.getClass().isArray())) |