ClojureScript

load-file in REPL improperly qualifies current-namespace ::keywords

Details

  • Type: Defect Defect
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Completed
  • Affects Version/s: None
  • Fix Version/s: None
  • Component/s: None
  • Labels:
    None
  • Patch:
    Code

Description

This can be seen by opening a REPL and:

(load-file "cljs/ns_test/foo.cljs")

The ::foo keyword in that file is resolved improperly:

ClojureScript:cljs.user> cljs.ns-test.foo/kw
:user/foo

cljs.repl/load-stream needs to force *ns* to track *cljs-ns* so that the Clojure reader will properly resolve auto-namespacing keywords. A patch is attached that does this, ensuring that any Clojure namespaces created solely for this purpose are removed.

Activity

Hide
David Nolen added a comment -

Thanks for the update!

Show
David Nolen added a comment - Thanks for the update!
Hide
Chas Emerick added a comment -

This is fixed on master (and probably has been for a while?).

Show
Chas Emerick added a comment - This is fixed on master (and probably has been for a while?).
Hide
Chas Emerick added a comment -

In this case, the created namespaces are guaranteed to be empty (only reading in that try, no evaluation), so removing them makes sense. As it is, ClojureScript leaves behind an empty namespace for each ns form it encounters and each js library it requires/aliases, which can be confusing / irritating (or at least inefficient) when using Clojure code completion or namespace browsing facilities in the same VM. I was hoping to avoid adding to that.

Show
Chas Emerick added a comment - In this case, the created namespaces are guaranteed to be empty (only reading in that try, no evaluation), so removing them makes sense. As it is, ClojureScript leaves behind an empty namespace for each ns form it encounters and each js library it requires/aliases, which can be confusing / irritating (or at least inefficient) when using Clojure code completion or namespace browsing facilities in the same VM. I was hoping to avoid adding to that.
Hide
David Nolen added a comment -

Ok this is not fixed in master, what's the point of removing the namespaces generated by ClojureScript?

Show
David Nolen added a comment - Ok this is not fixed in master, what's the point of removing the namespaces generated by ClojureScript?
Hide
David Nolen added a comment -

Is this fixed in master?

Show
David Nolen added a comment - Is this fixed in master?
Hide
Chas Emerick added a comment -

Note that there are two other places where the Clojure reader is used in ClojureScript — one in the analyzer, one in the compiler — where a similar fix may be required. Perhaps cljs.compiler/forms-seq should be the sole place where the Clojure reader is used with *ns* properly tracked therein...

Show
Chas Emerick added a comment - Note that there are two other places where the Clojure reader is used in ClojureScript — one in the analyzer, one in the compiler — where a similar fix may be required. Perhaps cljs.compiler/forms-seq should be the sole place where the Clojure reader is used with *ns* properly tracked therein...

People

Vote (0)
Watch (1)

Dates

  • Created:
    Updated:
    Resolved: