[CLJS-480] *cljs-data-readers* is bound to *data-readers* inconsistently Created: 01/Mar/13 Updated: 17/May/13
It looks like *cljs-data-readers* is not being bound to *data-readers* where it should be.
At a minimum, cljs.repl/load-stream does not. The practical effect of this instance is that e.g. (load-file "some/cljs/file.cljs") will fail if that file or any other contains a user-defined literal tag. Similar behaviour exists elsewhere, e.g. (load-namespace 'some.cljs.ns) will not load a namespace that contains user-defined tags (I think that one is due to *cljs-data-readers* not being bound in the analyzer).
This is related to CLJS-479 insofar as it's another symptom of ClojureScript loading code in subtly different ways in multiple places.
I'm happy to do either of:
I'm somewhat hesitant re: (2) insofar as the specific requirements of the compiler and analyzer and REPL may be divergent in ways that I'm not yet aware of, but it seems like it's worth a shot.
|Comment by Herwig Hochleitner [ 17/May/13 3:10 PM ]|
Attached patch 0001 binds data-readers in cljs.compiler/parse-ns.
This allows the compiler to run, even if files with reader tags are already compiled.
This in turn allows multiple test compilations to be brought back, which I'll submit as part of a patch for an additional debugging flag, if nobody beats me to it.
I think this won't fix load-file , but after the hotfix we should probably look for the proper place in the compiler to bind data-readers.
|Comment by Herwig Hochleitner [ 17/May/13 5:25 PM ]|
Patch 0002 is my overhaul for the test script.
Note: On my machine, with SpiderMonkey 185, the test case (not (integer? 1e+308)) fails. It probably doesn't have to do anything with the removed -n flag (there is no js -n omm), I just wanted to mention it.