summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/jvm/clojure/lang/APersistentMap.java9
-rw-r--r--src/jvm/clojure/lang/RT.java9
2 files changed, 16 insertions, 2 deletions
diff --git a/src/jvm/clojure/lang/APersistentMap.java b/src/jvm/clojure/lang/APersistentMap.java
index 664d27ca..f62b5aa3 100644
--- a/src/jvm/clojure/lang/APersistentMap.java
+++ b/src/jvm/clojure/lang/APersistentMap.java
@@ -11,6 +11,7 @@
package clojure.lang;
import java.util.Collection;
+import java.util.Map;
public abstract class APersistentMap extends AFn implements IPersistentMap, Collection{
int _hash = -1;
@@ -29,7 +30,13 @@ public String toString(){
}
public IPersistentCollection cons(Object o){
- if(o instanceof IPersistentVector)
+ if(o instanceof Map.Entry)
+ {
+ Map.Entry e = (Map.Entry) o;
+
+ return assoc(e.getKey(), e.getValue());
+ }
+ else if(o instanceof IPersistentVector)
{
IPersistentVector v = (IPersistentVector) o;
if(v.count() != 2)
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java
index 1b8b4f56..74bc58d5 100644
--- a/src/jvm/clojure/lang/RT.java
+++ b/src/jvm/clojure/lang/RT.java
@@ -265,7 +265,7 @@ public static void loadResourceScript(String name) throws Exception{
InputStream ins = RT.class.getResourceAsStream("/" + name);
if(ins != null)
{
- Compiler.load(new InputStreamReader(ins), RT.class.getResource("/"+name).toString(), name);
+ Compiler.load(new InputStreamReader(ins), RT.class.getResource("/" + name).toString(), name);
ins.close();
}
}
@@ -519,6 +519,13 @@ static public Object contains(Object coll, Object key){
static public Object find(Object coll, Object key){
if(coll == null)
return null;
+ else if(coll instanceof Map)
+ {
+ Map m = (Map) coll;
+ if(m.containsKey(key))
+ return new MapEntry(key, m.get(key));
+ return null;
+ }
return ((Associative) coll).entryAt(key);
}