Skip to content

Commit

Permalink
add parse-ns which just parses the ns portion of a file so that we ca…
Browse files Browse the repository at this point in the history
…n we return proper

information for dependency analysis even for files that have not changed.
  • Loading branch information
David Nolen authored and David Nolen committed Nov 19, 2012
1 parent 8c8b1a9 commit a27f811
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion src/clj/cljs/compiler.clj
Expand Up @@ -808,6 +808,24 @@
(or (not (.exists dest))
(> (.lastModified src) (.lastModified dest))))

(defn parse-ns [src dest]
(with-core-cljs
(binding [ana/*cljs-ns* 'cljs.user]
(loop [forms (forms-seq src)]
(if (seq forms)
(let [env (ana/empty-env)
ast (ana/analyze env (first forms))]
(if (= (:op ast) :ns)
(let [ns-name (:name ast)
deps (merge (:uses ast) (:requires ast))]
{:ns (or ns-name 'cljs.user)
:provides [ns-name]
:requires (if (= ns-name 'cljs.core)
(set (vals deps))
(conj (set (vals deps)) 'cljs.core))
:file dest})
(recur (rest forms)))))))))

(defn compile-file
"Compiles src to a file of the same name, but with a .js extension,
in the src file's directory.
Expand All @@ -831,7 +849,7 @@
(if (requires-compilation? src-file dest-file)
(do (mkdirs dest-file)
(compile-file* src-file dest-file))
{:file dest-file})
(parse-ns src-file dest-file))
(throw (java.io.FileNotFoundException. (str "The file " src " does not exist.")))))))

(comment
Expand Down

0 comments on commit a27f811

Please sign in to comment.