summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/jvm/clojure/lang/RT.java14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java
index aad678c7..6017aaf0 100644
--- a/src/jvm/clojure/lang/RT.java
+++ b/src/jvm/clojure/lang/RT.java
@@ -470,11 +470,21 @@ static ISeq seqFrom(Object coll){
}
static public ISeq keys(Object coll){
- return APersistentMap.KeySeq.create(seq(coll));
+ if(coll == null)
+ return null;
+ else if (coll instanceof Map)
+ return APersistentMap.KeySeq.create(seq(coll));
+ else
+ throw new IllegalArgumentException("Don't know how to get keys from: " + coll.getClass().getName());
}
static public ISeq vals(Object coll){
- return APersistentMap.ValSeq.create(seq(coll));
+ if(coll == null)
+ return null;
+ else if (coll instanceof Map)
+ return APersistentMap.ValSeq.create(seq(coll));
+ else
+ throw new IllegalArgumentException("Don't know how to get vals from: " + coll.getClass().getName());
}
static public IPersistentMap meta(Object x){