Skip to content

Commit

Permalink
CLJS-266 port namespaced-keyword fix by Daniel Skarda to current code…
Browse files Browse the repository at this point in the history
…base
  • Loading branch information
charles-dyfis-net authored and David Nolen committed Jul 10, 2012
1 parent 25d3a7a commit 7dbef70
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 2 deletions.
14 changes: 13 additions & 1 deletion src/clj/cljs/analyzer.clj
Expand Up @@ -22,6 +22,9 @@
(declare confirm-bindings)
(declare ^:dynamic *cljs-file*)

(def ^:dynamic *reader-ns-name* (gensym))
(def ^:dynamic *reader-ns* (create-ns *reader-ns-name*))

(defonce namespaces (atom '{cljs.core {:name cljs.core}
cljs.user {:name cljs.user}}))

Expand Down Expand Up @@ -202,6 +205,13 @@
(defmacro disallowing-recur [& body]
`(binding [*recur-frames* (cons nil *recur-frames*)] ~@body))

(defn analyze-keyword
[env sym]
{:op :constant :env env
:form (if (= (namespace sym) (name *reader-ns-name*))
(keyword (-> env :ns :name name) (name sym))
sym)})

(defn analyze-block
"returns {:statements .. :ret ..}"
[env exprs]
Expand Down Expand Up @@ -918,14 +928,16 @@
(map? form) (analyze-map env form name)
(vector? form) (analyze-vector env form name)
(set? form) (analyze-set env form name)
(keyword? form) (analyze-keyword env form)
:else {:op :constant :env env :form form}))))

(defn analyze-file
[f]
(let [res (if (= \/ (first f)) f (io/resource f))]
(assert res (str "Can't find " f " in classpath"))
(binding [*cljs-ns* 'cljs.user
*cljs-file* (.getPath ^java.net.URL res)]
*cljs-file* (.getPath ^java.net.URL res)
*ns* *reader-ns*]
(with-open [r (io/reader res)]
(let [env (empty-env)
pbr (clojure.lang.LineNumberingPushbackReader. r)
Expand Down
2 changes: 1 addition & 1 deletion src/clj/cljs/compiler.clj
Expand Up @@ -718,7 +718,7 @@
([f]
(forms-seq f (clojure.lang.LineNumberingPushbackReader. (io/reader f))))
([f ^java.io.PushbackReader rdr]
(if-let [form (read rdr nil nil)]
(if-let [form (binding [*ns* ana/*reader-ns*] (read rdr nil nil))]
(lazy-seq (cons form (forms-seq f rdr)))
(.close rdr))))

Expand Down

0 comments on commit 7dbef70

Please sign in to comment.