Map type extensions (#749)

This commit is contained in:
Wilker Lúcio 2021-03-08 18:58:43 -03:00 committed by GitHub
parent 9e1cb2f9de
commit 2ad4d3342c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 93 additions and 33 deletions

View file

@ -252,6 +252,7 @@
:instance-checks [clojure.lang.Associative :instance-checks [clojure.lang.Associative
clojure.lang.Atom clojure.lang.Atom
clojure.lang.Cons clojure.lang.Cons
clojure.lang.Counted
clojure.lang.Cycle clojure.lang.Cycle
clojure.lang.IObj clojure.lang.IObj
clojure.lang.Fn ;; to distinguish fns from maps, etc. clojure.lang.Fn ;; to distinguish fns from maps, etc.
@ -261,14 +262,20 @@
;; clojure.lang.IAtom ;; implemented as protocol in sci ;; clojure.lang.IAtom ;; implemented as protocol in sci
clojure.lang.IEditableCollection clojure.lang.IEditableCollection
clojure.lang.IMapEntry clojure.lang.IMapEntry
clojure.lang.IMeta
clojure.lang.ILookup clojure.lang.ILookup
clojure.lang.IPersistentCollection clojure.lang.IPersistentCollection
clojure.lang.IPersistentMap clojure.lang.IPersistentMap
clojure.lang.IPersistentSet clojure.lang.IPersistentSet
clojure.lang.IPersistentStack
clojure.lang.IPersistentVector clojure.lang.IPersistentVector
clojure.lang.IRecord clojure.lang.IRecord
clojure.lang.IReduce
clojure.lang.IReduceInit
clojure.lang.IKVReduce
clojure.lang.IRef clojure.lang.IRef
clojure.lang.ISeq clojure.lang.ISeq
clojure.lang.Indexed
clojure.lang.Iterate clojure.lang.Iterate
clojure.lang.LazySeq clojure.lang.LazySeq
clojure.lang.Named clojure.lang.Named
@ -284,11 +291,13 @@
clojure.lang.PersistentVector clojure.lang.PersistentVector
clojure.lang.Ratio clojure.lang.Ratio
clojure.lang.Repeat clojure.lang.Repeat
clojure.lang.Reversible
clojure.lang.Symbol clojure.lang.Symbol
clojure.lang.Sequential clojure.lang.Sequential
clojure.lang.Seqable clojure.lang.Seqable
clojure.lang.Volatile clojure.lang.Volatile
java.util.List] java.util.List
java.util.Iterator]
:custom ~custom-map}) :custom ~custom-map})
(defmacro gen-class-map [] (defmacro gen-class-map []

View file

@ -43,35 +43,86 @@
#_:clj-kondo/ignore #_:clj-kondo/ignore
(def reify-fn (def reify-fn
(gen-reify-combos (gen-reify-combos
{clojure.lang.Associative {containsKey [[this k]] {java.nio.file.FileVisitor
entryAt [[this k]] {preVisitDirectory [[this p attrs]]
assoc [[this k v]]} postVisitDirectory [[this p attrs]]
clojure.lang.ILookup {valAt [[this k] [this k default]]} visitFile [[this p attrs]]}
clojure.lang.IFn {applyTo [[this arglist]]
invoke [[this] java.io.FileFilter
[this a1] {accept [[this f]]}
[this a1 a2]
[this a1 a2 a3] java.io.FilenameFilter
[this a1 a2 a3 a4] {accept [[this f s]]}
[this a1 a2 a3 a4 a5]
[this a1 a2 a3 a4 a5 a6] clojure.lang.Associative
[this a1 a2 a3 a4 a5 a6 a7] {containsKey [[this k]]
[this a1 a2 a3 a4 a5 a6 a7 a8] entryAt [[this k]]
[this a1 a2 a3 a4 a5 a6 a7 a8 a9] assoc [[this k v]]}
[this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10]
[this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11] clojure.lang.ILookup
[this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12] {valAt [[this k] [this k default]]}
[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] clojure.lang.IFn
[this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15] {applyTo [[this arglist]]
[this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16] invoke [[this]
[this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17] [this a1]
[this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18] [this a1 a2]
[this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19] [this a1 a2 a3]
[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]
[this a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 varargs]]} [this a1 a2 a3 a4 a5]
java.nio.file.FileVisitor {preVisitDirectory [[this p attrs]] [this a1 a2 a3 a4 a5 a6]
postVisitDirectory [[this p attrs]] [this a1 a2 a3 a4 a5 a6 a7]
visitFile [[this p attrs]]} [this a1 a2 a3 a4 a5 a6 a7 a8]
java.io.FileFilter {accept [[this f]]} [this a1 a2 a3 a4 a5 a6 a7 a8 a9]
java.io.FilenameFilter {accept [[this f s]]}})) [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]]}}))