Skip to content

Commit a0f8cf9

Browse files
committed
add failing test
1 parent 7563760 commit a0f8cf9

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

test/sci/interop_test.cljc

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,14 @@
338338
#?(:cljs (deftest local-interop-test
339339
(is (= 1 (tu/eval* "(let [j #js {:a (fn [] 1)}] (j.a))" nil)))))
340340

341-
#?(:clj (def type-hint-config {:classes {'java.util.concurrent.Executors java.util.concurrent.Executors 'java.util.concurrent.ThreadPoolExecutor java.util.concurrent.ThreadPoolExecutor 'java.util.concurrent.Callable java.util.concurrent.Callable 'java.util.concurrent.FutureTask java.util.concurrent.FutureTask 'java.lang.Runnable java.lang.Runnable}}))
341+
#?(:clj (def type-hint-config {:classes {'java.util.concurrent.Executors java.util.concurrent.Executors
342+
'java.util.concurrent.ThreadPoolExecutor java.util.concurrent.ThreadPoolExecutor
343+
'java.util.concurrent.Callable java.util.concurrent.Callable
344+
'java.util.concurrent.FutureTask java.util.concurrent.FutureTask
345+
'java.lang.Runnable java.lang.Runnable
346+
'java.util.concurrent.ExecutorService java.util.concurrent.ExecutorService}
347+
:imports {'Runnable 'java.lang.Runnable
348+
'Callable 'java.util.concurrent.Callable}}))
342349

343350
#?(:clj
344351
(deftest type-hint-test
@@ -365,14 +372,22 @@
365372
(testing "type hinting fn argument with callable returns nil on futuretask get"
366373
(is (= 3 (sci/eval-string "(defn fut [^java.util.concurrent.Callable f] (.submit (java.util.concurrent.Executors/newCachedThreadPool) f)) (.get (fut (fn [] 3)))" type-hint-config))))
367374
(testing "type hinting on fn expression as argument with Callable returns nil on futuretask get"
368-
(is (= 3 (sci/eval-string "(def fut (.submit (java.util.concurrent.Executors/newCachedThreadPool) ^java.util.concurrent.Callable (fn [] 3))) (.get fut)" type-hint-config)))))
375+
(is (= 3 (sci/eval-string "(def fut (.submit (java.util.concurrent.Executors/newCachedThreadPool) ^java.util.concurrent.Callable (fn [] 3))) (.get fut)" type-hint-config))))
376+
(testing "similar cases but with qualified interop"
377+
(is (nil? (sci/eval-string "(def ^java.util.concurrent.ExecutorService thread-pool (java.util.concurrent.Executors/newCachedThreadPool))
378+
@(java.util.concurrent.ExecutorService/.submit thread-pool ^Runnable (fn [] 3))"
379+
type-hint-config)))
380+
(is (= 3 (sci/eval-string "(def ^java.util.concurrent.ExecutorService thread-pool (java.util.concurrent.Executors/newCachedThreadPool))
381+
@(java.util.concurrent.ExecutorService/.submit thread-pool ^Callable (fn [] 3))"
382+
type-hint-config)))))
369383
(testing "type hint on interop argument"
370384
;; this test assumes clojure/core.clj comes from a jar file
371385
;; the test will fail when not processing the type hint on the interop argument
372386
(sci/eval-string "(.getJarEntry ^java.net.JarURLConnection (.openConnection resource))"
373387
{:bindings {'resource (io/resource "clojure/core.clj")}
374388
:classes {'java.net.URL java.net.URL
375-
'java.net.JarURLConnection java.net.JarURLConnection}}))))
389+
'java.net.JarURLConnection java.net.JarURLConnection}}))
390+
))
376391

377392
#?(:cljs
378393
(deftest issue-987-munged-property-name-test

0 commit comments

Comments
 (0)