 (defn ns-side-effects
   [env {:keys [op] :as ast} opts]
   (if (= :ns op)
-    (let [{:keys [deps require-macros use-macros reload reloads]} ast]
+    (let [{:keys [deps uses require-macros use-macros reload reloads]} ast]
       (when (and *analyze-deps* (seq deps))
         (analyze-deps name deps env (dissoc opts :macros-ns)))
+      (when (and *analyze-deps* (seq uses))
+        (check-uses uses env))
       (when *load-macros*
         (load-core)
         (doseq [nsym (vals use-macros)]

                  ns-info))
              ns-info)]
        (swap! env/*compiler* update-in [::namespaces name] merge ns-info)
        (merge {:op :ns :env env :form form
                :reloads @reloads}
          (cond-> ns-info
            (@reload :use)


(defn analyze* [env form name opts]
  (let [passes *passes*
        passes (when (nil? passes)
                 #?(:clj  [infer-type ns-side-effects]
                    :cljs [infer-type]))
        form   (if (instance? LazySeq form)
                 (if (seq form) form ())
                 form)
