     ast))
 
 (defn hijacked-parse-ns [env form name opts]
-  (assoc (util/parse-ns form)
-    :env env
-    :form form
-    :op :ns))
+  (-> (util/parse-ns form)
+      (assoc :env env :form form :op :ns)))
 
 (def default-parse ana/parse)
 

                    (zero? last-modified)
                    (> (or (:compiled-at src) ;; js is not compiled but maybe modified
                           last-modified)
                      (.lastModified target)))]

    (io/make-parents target)


         (string? externs-source)
         (seq externs-source)]}

  (merge-resource state
    {:type :js
     :foreign true
     :name name
     :js-name name
     :provides provides
     :requires requires
     ;; FIXME: should allow getting a vector as provides instead
     :require-order (into [] requires)
     :output js-source
     :input (atom js-source)
     :externs-source externs-source
     :last-modified 0
     }))

(defn make-runtime-setup [{:keys [runtime] :as state}]
  (let [src (str/join "\n"
              [(case (:print-fn runtime)
                 ;; Browser
                 :console "cljs.core.enable_console_print_BANG_();"
                 ;; Node.JS
                 :print "cljs.core._STAR_print_fn_STAR_ = require(\"util\").print;")])]
    {:type :js
     :name "runtime_setup.js"
     :js-name "runtime_setup.js"
