(defn check-invoke-arg-types
[env {:keys [op] :as ast} opts]
(when (and (not (analyzed? ast))
#?(:clj (= :invoke op)
:cljs (keyword-identical? :invoke op)))
(when-some [[name {:keys [valid? warning-type]}] (find invoke-arg-type-validators (-> ast :f :info :name))]
(let [types (mapv :tag (:args ast))]
(when-not (valid? types)
(warning warning-type env
{:name name
:types types})))))
(analyzed ast))