File tree Expand file tree Collapse file tree 5 files changed +29
-11
lines changed
Expand file tree Collapse file tree 5 files changed +29
-11
lines changed Original file line number Diff line number Diff line change 596596 binding-name (if t (vary-meta binding-name
597597 assoc :tag t)
598598 binding-name)
599- binding-meta (meta binding-name)
600- t (when m (:tag binding-meta))
601- binding-name (if (symbol? t)
602- (vary-meta binding-name
603- assoc :tag-class (interop/resolve-type-hint ctx t))
604- binding-name)
599+ #?@(:clj [binding-meta (meta binding-name)
600+ t (when m (:tag binding-meta))
601+ binding-name (if (symbol? t)
602+ (vary-meta binding-name
603+ assoc :tag-class
604+ (or (interop/resolve-type-hint ctx t)
605+ (records/resolve-record-class ctx t)
606+ (throw-error-with-location
607+ (str " Unable to resolve classname: " t) t)))
608+ binding-name)])
605609 v (analyze ctx binding-value)
606610 new-iden (gensym )
607611 cb (:closure-bindings ctx)
Original file line number Diff line number Diff line change 3636 ~@(when needrec [recform]))
3737 ~recform)]))
3838 (let [seq- (gensym " seq_" )
39- chunk- (with-meta (gensym " chunk_" )
39+ chunk- (gensym " chunk_ " ) #_( with-meta (gensym " chunk_" )
4040 {:tag 'clojure.lang.IChunk})
4141 count- (gensym " count_" )
4242 i- (gensym " i_" )
Original file line number Diff line number Diff line change 159159 'char Character/TYPE
160160 'chars (Class/forName " [C" )}))
161161
162- (defn resolve-type-hint [ctx sym]
163- (or (get prim->class sym)
164- (:class (resolve-class-opts ctx sym))))
162+ #?(:clj
163+ (defn resolve-type-hint [ctx sym]
164+ (or (get prim->class sym)
165+ (:class (resolve-class-opts ctx sym)))))
165166
166167#?(:clj
167168 (def ->array-class
Original file line number Diff line number Diff line change 195195 #?@(:clj [tag (with-meta
196196 {:tag tag
197197 :tag-class (or tag-class
198- (interop/resolve-type-hint ctx tag))})])
198+ (interop/resolve-type-hint ctx tag)
199+ (records/resolve-record-class ctx tag)
200+ (throw-error-with-location
201+ (str " Unable to resolve classname: " tag) tag))})])
199202 mutable? (vary-meta assoc :mutable true ))]
200203 v))]
201204 [k v]))
Original file line number Diff line number Diff line change 332332
333333#?(:cljs (deftest local-interop-test
334334 (is (= 1 (tu/eval* " (let [j #js {:a (fn [] 1)}] (j.a))" nil )))))
335+
336+ (deftest type-hint-test
337+ (testing " type hinting with runnable returns nil on futuretask get"
338+ #?(:clj
339+ (let [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}}]
340+ (is (nil? (sci/eval-string " (def fut (let [^java.lang.Runnable f (fn [] 3)] (.submit (java.util.concurrent.Executors/newCachedThreadPool) f))) (.get fut)" config))))))
341+ (testing " type hinting with callable returns nil on futuretask get"
342+ #?(:clj
343+ (let [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}}]
344+ (is (= 3 (sci/eval-string " (def fut (let [^java.util.concurrent.Callable f (fn [] 3)] (.submit (java.util.concurrent.Executors/newCachedThreadPool) f))) (.get fut)" config)))))))
You can’t perform that action at this time.
0 commit comments