diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 14 |
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){ |