This commit is contained in:
Michiel Borkent 2024-10-10 17:18:55 +02:00
parent 420a6c7748
commit d92036ee2e
3 changed files with 96 additions and 87 deletions

View file

@ -1,5 +1,6 @@
[{ [{
"interfaces": [ "interfaces": [
"java.util.function.Predicate" "java.util.function.Predicate"
, "java.util.function.Function"
] ]
}] }]

View file

@ -668,94 +668,101 @@
c)) c))
m (assoc m :public-class m (assoc m :public-class
(fn [v] (fn [v]
;; (prn :v v)
;; NOTE: a series of instance check, so far, is still cheaper ;; NOTE: a series of instance check, so far, is still cheaper
;; than piggybacking on defmulti or defprotocol ;; than piggybacking on defmulti or defprotocol
(cond (instance? java.lang.Process v) (let [res (cond (instance? java.lang.Process v)
java.lang.Process java.lang.Process
(instance? java.lang.ProcessHandle v) (instance? java.lang.ProcessHandle v)
java.lang.ProcessHandle java.lang.ProcessHandle
(instance? java.lang.ProcessHandle$Info v) (instance? java.lang.ProcessHandle$Info v)
java.lang.ProcessHandle$Info java.lang.ProcessHandle$Info
;; added for calling .put on .environment from ProcessBuilder ;; added for calling .put on .environment from ProcessBuilder
(instance? java.util.Map v) (instance? java.util.Map v)
java.util.Map java.util.Map
;; added for issue #239 regarding clj-http-lite ;; added for issue #239 regarding clj-http-lite
;; can potentially be removed due to fix for #1061 ;; can potentially be removed due to fix for #1061
(instance? java.io.ByteArrayOutputStream v) (instance? java.io.ByteArrayOutputStream v)
java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream
(instance? java.security.MessageDigest v) (instance? java.security.MessageDigest v)
java.security.MessageDigest java.security.MessageDigest
;; streams ;; streams
(instance? java.io.InputStream v) (instance? java.io.InputStream v)
java.io.InputStream java.io.InputStream
(instance? java.io.OutputStream v) (instance? java.io.OutputStream v)
java.io.OutputStream java.io.OutputStream
;; java nio ;; java nio
(instance? java.nio.file.Path v) (instance? java.nio.file.Path v)
java.nio.file.Path java.nio.file.Path
(instance? java.nio.file.FileSystem v) (instance? java.nio.file.FileSystem v)
java.nio.file.FileSystem java.nio.file.FileSystem
(instance? java.nio.file.PathMatcher v) (instance? java.nio.file.PathMatcher v)
java.nio.file.PathMatcher java.nio.file.PathMatcher
(instance? java.util.stream.IntStream v) (instance? java.util.stream.Stream v)
java.util.stream.IntStream java.util.stream.Stream
(instance? java.util.stream.BaseStream v) (instance? java.util.stream.IntStream v)
java.util.stream.BaseStream java.util.stream.IntStream
(instance? java.nio.ByteBuffer v) (instance? java.util.stream.BaseStream v)
java.nio.ByteBuffer java.util.stream.BaseStream
(instance? java.nio.charset.Charset v) (instance? java.nio.ByteBuffer v)
java.nio.charset.Charset java.nio.ByteBuffer
(instance? java.nio.charset.CharsetEncoder v) (instance? java.nio.charset.Charset v)
java.nio.charset.CharsetEncoder java.nio.charset.Charset
(instance? java.nio.CharBuffer v) (instance? java.nio.charset.CharsetEncoder v)
java.nio.CharBuffer java.nio.charset.CharsetEncoder
(instance? java.nio.channels.FileChannel v) (instance? java.nio.CharBuffer v)
java.nio.channels.FileChannel java.nio.CharBuffer
(instance? java.nio.channels.ServerSocketChannel v) (instance? java.nio.channels.FileChannel v)
java.nio.channels.ServerSocketChannel java.nio.channels.FileChannel
(instance? java.nio.channels.SocketChannel v) (instance? java.nio.channels.ServerSocketChannel v)
java.nio.channels.SocketChannel java.nio.channels.ServerSocketChannel
(instance? java.net.CookieStore v) (instance? java.nio.channels.SocketChannel v)
java.net.CookieStore java.nio.channels.SocketChannel
;; this makes interop on reified classes work (instance? java.net.CookieStore v)
;; see java_net_http_test/interop-test java.net.CookieStore
(instance? sci.impl.types.IReified v) ;; this makes interop on reified classes work
(first (t/getInterfaces v)) ;; see java_net_http_test/interop-test
;; fix for #1061 (instance? sci.impl.types.IReified v)
(instance? java.net.URLClassLoader v) (first (t/getInterfaces v))
java.net.URLClassLoader ;; fix for #1061
(instance? java.lang.ClassLoader v) (instance? java.net.URLClassLoader v)
java.lang.ClassLoader java.net.URLClassLoader
(instance? java.nio.file.attribute.BasicFileAttributes v) (instance? java.lang.ClassLoader v)
java.nio.file.attribute.BasicFileAttributes java.lang.ClassLoader
(instance? java.util.concurrent.Future v) (instance? java.nio.file.attribute.BasicFileAttributes v)
java.util.concurrent.Future java.nio.file.attribute.BasicFileAttributes
(instance? java.util.concurrent.ScheduledExecutorService v) (instance? java.util.concurrent.Future v)
java.util.concurrent.ScheduledExecutorService java.util.concurrent.Future
(instance? java.util.concurrent.ExecutorService v) (instance? java.util.concurrent.ScheduledExecutorService v)
java.util.concurrent.ExecutorService java.util.concurrent.ScheduledExecutorService
(instance? java.util.Iterator v) (instance? java.util.concurrent.ExecutorService v)
java.util.Iterator java.util.concurrent.ExecutorService
(instance? javax.crypto.SecretKey v) (instance? java.util.Iterator v)
javax.crypto.SecretKey java.util.Iterator
(instance? javax.net.ssl.SSLSocketFactory v) (instance? javax.crypto.SecretKey v)
javax.net.ssl.SSLSocketFactory javax.crypto.SecretKey
(instance? javax.net.ssl.SSLSocket v) (instance? javax.net.ssl.SSLSocketFactory v)
javax.net.ssl.SSLSocket javax.net.ssl.SSLSocketFactory
(instance? java.lang.Thread v) (instance? javax.net.ssl.SSLSocket v)
java.lang.Thread javax.net.ssl.SSLSocket
(instance? java.util.concurrent.ThreadFactory v) (instance? java.lang.Thread v)
java.util.concurrent.ThreadFactory java.lang.Thread
(instance? java.security.cert.X509Certificate v) (instance? java.util.concurrent.ThreadFactory v)
java.security.cert.X509Certificate java.util.concurrent.ThreadFactory
(instance? java.io.Console v) (instance? java.security.cert.X509Certificate v)
java.io.Console java.security.cert.X509Certificate
(instance? java.util.Set v) (instance? java.io.Console v)
java.util.Set java.io.Console
(instance? java.io.Closeable v) (instance? java.util.Set v)
java.io.Closeable java.util.Set
;; keep commas for merge friendliness (instance? java.io.Closeable v)
))) java.io.Closeable
(instance? java.util.Collection v)
java.util.Collection
;; keep commas for merge friendliness
)]
;; (prn :res res)
res)))
m (assoc m (list 'quote 'clojure.lang.Var) 'sci.lang.Var) m (assoc m (list 'quote 'clojure.lang.Var) 'sci.lang.Var)
m (assoc m (list 'quote 'clojure.lang.Namespace) 'sci.lang.Namespace)] m (assoc m (list 'quote 'clojure.lang.Namespace) 'sci.lang.Namespace)]
m)) m))

View file

@ -66,4 +66,5 @@
(binding [*in* rdr] (read-line) (read-line)) (.getLineNumber rdr)")))) (binding [*in* rdr] (read-line) (read-line)) (.getLineNumber rdr)"))))
(deftest FI-coercion (deftest FI-coercion
(is (true? (bb nil "(= [1 3] (into [] (doto (java.util.ArrayList. [1 2 3]) (.removeIf even?))))")))) (is (true? (bb nil "(= [1 3] (into [] (doto (java.util.ArrayList. [1 2 3]) (.removeIf even?))))")))
(is (true? (bb nil "(= '(\\9) (-> \"a9-\" seq .stream (.filter Character/isDigit) stream-seq!))"))))