                     (zero? last-modified)
                     (> (or (:compiled-at src) ;; js is not compiled but maybe modified
                            last-modified)
-                      (.lastModified target)))]
+                       (.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"

    ast))

(defn hijacked-parse-ns [env form name opts]
  (-> (util/parse-ns form)
      (assoc :env env :form form :op :ns)))

(def default-parse ana/parse)

