summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/boot.clj4
-rw-r--r--src/jvm/clojure/lang/RT.java13
2 files changed, 15 insertions, 2 deletions
diff --git a/src/boot.clj b/src/boot.clj
index 10e0ce84..63103355 100644
--- a/src/boot.clj
+++ b/src/boot.clj
@@ -1909,7 +1909,7 @@ not-every? (comp not every?))
(fn [bvec b v]
(let [gmap (or (:as b) (gensym "map__"))
defaults (:or b)]
- (loop [ret (-> bvec (conj gmap) (conj (list `or v {})))
+ (loop [ret (-> bvec (conj gmap) (conj v))
bes (reduce
(fn [bes entry]
(reduce #(assoc %1 %2 ((val entry) %2))
@@ -1923,7 +1923,7 @@ not-every? (comp not every?))
has-default (contains? defaults bb)]
(recur (pb ret bb (if has-default
(list `get gmap bk (defaults bb))
- (list gmap bk)))
+ (list `get gmap bk)))
(rest bes)))
ret))))]
(cond
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java
index e2723391..5127a9cd 100644
--- a/src/jvm/clojure/lang/RT.java
+++ b/src/jvm/clojure/lang/RT.java
@@ -465,6 +465,12 @@ static public Object get(Object coll, Object key){
Map m = (Map) coll;
return m.get(key);
}
+ else if(coll instanceof IPersistentSet)
+ {
+ IPersistentSet set = (IPersistentSet) coll;
+ if(set.contains(key))
+ return key;
+ }
else if(key instanceof Number && (coll instanceof String || coll.getClass().isArray()))
{
int n = ((Number) key).intValue();
@@ -489,6 +495,13 @@ static public Object get(Object coll, Object key, Object notFound){
return m.get(key);
return notFound;
}
+ else if(coll instanceof IPersistentSet)
+ {
+ IPersistentSet set = (IPersistentSet) coll;
+ if(set.contains(key))
+ return key;
+ return notFound;
+ }
else if(key instanceof Number && (coll instanceof String || coll.getClass().isArray()))
{
int n = ((Number) key).intValue();