diff --git a/src/babashka/impl/classes.clj b/src/babashka/impl/classes.clj index c1eb8feb..7b84c2a6 100644 --- a/src/babashka/impl/classes.clj +++ b/src/babashka/impl/classes.clj @@ -252,6 +252,7 @@ :instance-checks [clojure.lang.Associative clojure.lang.Atom clojure.lang.Cons + clojure.lang.Counted clojure.lang.Cycle clojure.lang.IObj clojure.lang.Fn ;; to distinguish fns from maps, etc. @@ -261,14 +262,20 @@ ;; clojure.lang.IAtom ;; implemented as protocol in sci clojure.lang.IEditableCollection clojure.lang.IMapEntry + clojure.lang.IMeta clojure.lang.ILookup clojure.lang.IPersistentCollection clojure.lang.IPersistentMap clojure.lang.IPersistentSet + clojure.lang.IPersistentStack clojure.lang.IPersistentVector clojure.lang.IRecord + clojure.lang.IReduce + clojure.lang.IReduceInit + clojure.lang.IKVReduce clojure.lang.IRef clojure.lang.ISeq + clojure.lang.Indexed clojure.lang.Iterate clojure.lang.LazySeq clojure.lang.Named @@ -284,11 +291,13 @@ clojure.lang.PersistentVector clojure.lang.Ratio clojure.lang.Repeat + clojure.lang.Reversible clojure.lang.Symbol clojure.lang.Sequential clojure.lang.Seqable clojure.lang.Volatile - java.util.List] + java.util.List + java.util.Iterator] :custom ~custom-map}) (defmacro gen-class-map [] diff --git a/src/babashka/impl/reify.clj b/src/babashka/impl/reify.clj index 74a72248..fa008737 100644 --- a/src/babashka/impl/reify.clj +++ b/src/babashka/impl/reify.clj @@ -43,35 +43,86 @@ #_:clj-kondo/ignore (def reify-fn (gen-reify-combos - {clojure.lang.Associative {containsKey [[this k]] - entryAt [[this k]] - assoc [[this k v]]} - clojure.lang.ILookup {valAt [[this k] [this k default]]} - clojure.lang.IFn {applyTo [[this arglist]] - invoke [[this] - [this a1] - [this a1 a2] - [this a1 a2 a3] - [this a1 a2 a3 a4] - [this a1 a2 a3 a4 a5] - [this a1 a2 a3 a4 a5 a6] - [this a1 a2 a3 a4 a5 a6 a7] - [this a1 a2 a3 a4 a5 a6 a7 a8] - [this a1 a2 a3 a4 a5 a6 a7 a8 a9] - [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10] - [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11] - [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12] - [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13] - [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14] - [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15] - [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16] - [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17] - [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18] - [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19] - [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20] - [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 varargs]]} - java.nio.file.FileVisitor {preVisitDirectory [[this p attrs]] - postVisitDirectory [[this p attrs]] - visitFile [[this p attrs]]} - java.io.FileFilter {accept [[this f]]} - java.io.FilenameFilter {accept [[this f s]]}})) + {java.nio.file.FileVisitor + {preVisitDirectory [[this p attrs]] + postVisitDirectory [[this p attrs]] + visitFile [[this p attrs]]} + + java.io.FileFilter + {accept [[this f]]} + + java.io.FilenameFilter + {accept [[this f s]]} + + clojure.lang.Associative + {containsKey [[this k]] + entryAt [[this k]] + assoc [[this k v]]} + + clojure.lang.ILookup + {valAt [[this k] [this k default]]} + + clojure.lang.IFn + {applyTo [[this arglist]] + invoke [[this] + [this a1] + [this a1 a2] + [this a1 a2 a3] + [this a1 a2 a3 a4] + [this a1 a2 a3 a4 a5] + [this a1 a2 a3 a4 a5 a6] + [this a1 a2 a3 a4 a5 a6 a7] + [this a1 a2 a3 a4 a5 a6 a7 a8] + [this a1 a2 a3 a4 a5 a6 a7 a8 a9] + [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10] + [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11] + [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12] + [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13] + [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14] + [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15] + [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16] + [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17] + [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18] + [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19] + [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20] + [this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 varargs]]} + + clojure.lang.IPersistentCollection + {count [[this]] + cons [[this x]] + empty [[this]] + equiv [[this x]]} + + clojure.lang.IReduce + {reduce [[this f]]} + + clojure.lang.IReduceInit + {reduce [[this f initial]]} + + clojure.lang.IKVReduce + {kvreduce [[this f initial]]} + + clojure.lang.Indexed + {nth [[this n] [this n not-found]]} + + clojure.lang.IPersistentMap + {assocEx [[this k v]] + without [[this k]]} + + clojure.lang.IPersistentStack + {peek [[this]] + pop [[this]]} + + clojure.lang.Reversible + {rseq [[this]]} + + clojure.lang.Seqable + {seq [[this]]} + + java.lang.Iterable + {iterator [[this]] + forEach [[this action]]} + + java.util.Iterator + {hasNext [[this]] + next [[this]]}}))