Thanks for elucidation. In my particular case, I was just trying to test that I was using goog.DEBUG correctly from project.clj but in a dev mode which has :none for optimizations. I missed docs that :closure-defines doesn't work in that mode.
I've updated the wiki page to the effect that :clojure-defines is ignored for :none and :whitespace optimizations. Jamie On May 5, 2015, at 3:07 AM, Mike Thompson <[email protected]> wrote: > On Tuesday, May 5, 2015 at 11:02:15 AM UTC+10, Jamie Orchard-Hays wrote: >> WRT wiki: looking at this commit, it looks like a keyword works: >> >> >> https://github.com/clojure/clojurescript/commit/cb7e97f13ae6a03086f5d96ba58e5f3d5cba7dc3 >> >> >> (name key) >> >> >> >> >> Jamie >> >> >> On May 4, 2015, at 8:55 PM, Jamie Orchard-Hays <[email protected]> wrote: >> >> Aha! Thanks to you both, David and Thomas! :optimizations :none >> >> >> Jamie >> >> >> >> On May 4, 2015, at 6:48 PM, David Nolen <[email protected]> wrote: >> >> Fixed the wiki. :closure-defines currently only work under a compilation >> mode, i.e. a higher setting than :none. >> >> >> David >> >> >> On Mon, May 4, 2015 at 6:40 PM, Jamie Orchard-Hays <[email protected]> wrote: >> >> Cheers, David. Doubly confused now. The example at >> https://github.com/clojure/clojurescript/wiki/Compiler-Options has the colon >> prefix (:goog.DEBUG). In any case, removing the colon had no effect. > > > Our experiments on goog.DEBUG wrt to :optimizations setting showed the > following: > > - `:none` - your project.clj setting is always ignored and defaults to `true`. > - `:whitespace` - same as :none…ignored. > - `:simple` - defaults to true. But recognises both {:goog.DEBUG false} and > {"goog.DEBUG" false} in project.clj > - `:advanced` - same as :simple > > > BTW, as far as I understand it, (WARNING UNTESTED) you can do your own > overrideable compile-time constants, by having a docstring on a def which > conforms to the correct Closure Compile form. See @define in > https://developers.google.com/closure/compiler/docs/js-for-compiler > > > ;; in a namespace "example.ns" > ;; the docstring is a very specific format > (def my-var "@define {boolean}" true) > > Then in the project.clj you can add: > > {:compiler > :closure-defines {:example.ns.my-var false}...} > > > But this will work the same way as goog.DEBUG. Ie. you can only override the > default value (true) for :simple and :advanced. For the other two, you'll > get true no matter what value you supply in project.clj. > > (If David agrees on the correctness of these statements) should these notes > be added to some Wiki somewhere? > > > -- > Mike > > > > -- > Note that posts from new members are moderated - please be patient with your > first post. > --- > You received this message because you are subscribed to the Google Groups > "ClojureScript" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/clojurescript. -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/clojurescript.
