diff options
author | Rich Hickey <richhickey@gmail.com> | 2008-12-18 22:55:21 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2008-12-18 22:55:21 +0000 |
commit | 6e5647c5d811f37e7a03ab7975908436d7995cde (patch) | |
tree | 22b5e6365fe000b6a338d7ff277920c19f4a1d83 /src | |
parent | 98b43b66f066dcc4fcb726c9120fe9ef82569a0c (diff) |
make sure find returns entry with original key
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/PersistentArrayMap.java | 2 | ||||
-rw-r--r-- | src/jvm/clojure/lang/PersistentStructMap.java | 2 | ||||
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 5 |
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 |