summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-12-18 22:55:21 +0000
committerRich Hickey <richhickey@gmail.com>2008-12-18 22:55:21 +0000
commit6e5647c5d811f37e7a03ab7975908436d7995cde (patch)
tree22b5e6365fe000b6a338d7ff277920c19f4a1d83 /src
parent98b43b66f066dcc4fcb726c9120fe9ef82569a0c (diff)
make sure find returns entry with original key
Diffstat (limited to 'src')
-rw-r--r--src/jvm/clojure/lang/PersistentArrayMap.java2
-rw-r--r--src/jvm/clojure/lang/PersistentStructMap.java2
-rw-r--r--src/jvm/clojure/lang/RT.java5
3 files changed, 5 insertions, 4 deletions
diff --git a/src/jvm/clojure/lang/PersistentArrayMap.java b/src/jvm/clojure/lang/PersistentArrayMap.java
index f329a45c..d8fbd354 100644
--- a/src/jvm/clojure/lang/PersistentArrayMap.java
+++ b/src/jvm/clojure/lang/PersistentArrayMap.java
@@ -83,7 +83,7 @@ public boolean containsKey(Object key){
public IMapEntry entryAt(Object key){
int i = indexOf(key);
if(i >= 0)
- return new MapEntry(key,array[i+1]);
+ return new MapEntry(array[i],array[i+1]);
return null;
}
diff --git a/src/jvm/clojure/lang/PersistentStructMap.java b/src/jvm/clojure/lang/PersistentStructMap.java
index 4b975339..01e86346 100644
--- a/src/jvm/clojure/lang/PersistentStructMap.java
+++ b/src/jvm/clojure/lang/PersistentStructMap.java
@@ -123,7 +123,7 @@ public IMapEntry entryAt(Object key){
Map.Entry e = def.keyslots.entryAt(key);
if(e != null)
{
- return new MapEntry(key, vals[(Integer) e.getValue()]);
+ return new MapEntry(e.getKey(), vals[(Integer) e.getValue()]);
}
return ext.entryAt(key);
}
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java
index 502f00d8..4cb775ee 100644
--- a/src/jvm/clojure/lang/RT.java
+++ b/src/jvm/clojure/lang/RT.java
@@ -663,14 +663,15 @@ 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)
+ else if(coll instanceof Associative)
+ return ((Associative) coll).entryAt(key);
+ else
{
Map m = (Map) coll;
if(m.containsKey(key))
return new MapEntry(key, m.get(key));
return null;
}
- return ((Associative) coll).entryAt(key);
}
//takes a seq of key,val,key,val