cljs.js/ns-side-effects
function | removed v1.7.28 | added v1.7.10 | Edit |
(ns-side-effects bound-vars ana-env ast opts cb)
(ns-side-effects load bound-vars ana-env {:keys [op], :as ast} opts cb)
(defn ns-side-effects
([bound-vars ana-env ast opts cb]
(ns-side-effects false bound-vars ana-env ast opts cb))
([load bound-vars ana-env {:keys [op] :as ast} opts cb]
(when (:verbose opts)
(debug-prn "Namespace side effects for" (:name ast)))
(if (= :ns op)
(let [{:keys [deps uses requires require-macros use-macros reload reloads]} ast
env (:*compiler* bound-vars)]
(letfn [(check-uses-and-load-macros [res]
(if (:error res)
(cb res)
(let [res (try
(when (and (:*analyze-deps* bound-vars) (seq uses))
(when (:verbose opts) (debug-prn "Checking uses"))
(ana/check-uses uses env)
{:value nil})
(catch :default cause
(wrap-error
(ana/error ana-env
(str "Could not parse ns form " (:name ast)) cause))))]
(if (:error res)
(cb res)
(if (:*load-macros* bound-vars)
(do
(when (:verbose opts) (debug-prn "Processing :use-macros for" (:name ast)))
(load-macros bound-vars :use-macros use-macros reload reloads opts
(fn [res]
(if (:error res)
(cb res)
(do
(when (:verbose opts) (debug-prn "Processing :require-macros for" (:name ast)))
(load-macros bound-vars :require-macros require-macros reloads reloads opts
(fn [res]
(if (:error res)
(cb res)
(let [res (try
(when (seq use-macros)
(when (:verbose opts) (debug-prn "Checking :use-macros for" (:name ast)))
(ana/check-use-macros use-macros env))
{:value nil}
(catch :default cause
(wrap-error
(ana/error ana-env
(str "Could not parse ns form " (:name ast)) cause))))]
(if (:error res)
(cb res)
(cb {:value ast})))))))))))
(cb {:value ast}))))))]
(cond
(and load (seq deps))
(load-deps bound-vars ana-env (:name ast) deps (dissoc opts :macros-ns)
check-uses-and-load-macros)
(and (not load) (:*analyze-deps* bound-vars) (seq deps))
(analyze-deps bound-vars ana-env (:name ast) deps (dissoc opts :macros-ns)
check-uses-and-load-macros)
:else
(check-uses-and-load-macros {:value nil}))))
(cb {:value ast}))))