         (when sourcemap-json "and source map ")
         "for " path))))
 
-(declare strip-source-map)
+(declare ^{:arglists '([sm])} strip-source-map)
 
 (defn- write-cache
   [path name source cache]

    (finally (capture-session-state-for-session-id session-id))))

(defn- execute-source
  [[source-type source-value] {:keys [expression?] :as opts}]
  (binding [ana/*cljs-ns*    @current-ns
            *ns*             (create-ns @current-ns)
            cljs/*load-fn*   load-fn
            cljs/*eval-fn*   (get-eval-fn)
            r/*data-readers* tags/*cljs-data-readers*]
    (if-not (= "text" source-type)
      (process-execute-path source-value (assoc opts :source-path source-value))
      (let [source-text source-value
            first-form  (eof-guarded-read source-text)]
        (when (not= eof first-form)
          (let [expression-form (and expression? first-form)]
            (if (repl-special? expression-form)
              (process-repl-special expression-form opts)
              (process-execute-source source-text expression-form opts))))))))

(defn- ^:export execute
  [source expression? print-nil-expression? set-ns theme-id session-id]

;; Hack to remember which file path each namespace was loaded from
(defonce ^:private name-path (atom {}))

(declare ^{:arglists '([file suffix])} add-suffix)

(defn- js-path-for-name
  [name]
