Sorry, did I say Vars? I meant syms.
On Thu, May 29, 2014 at 11:41 AM, Gary Trakhman <[email protected]>wrote: > #1, CLJS macros must use fully-qualified vars. It is possible to resolve > using analyzer state, but that requires internal knowledge of the CLJS > compiler. > #2, it would be going to whatever the binding of *out* is in the current > thread, likely it's ending up in the compiled CLJS source code because of > how the compiler works :-). > > There's no difference to the CLJS compiler and emitted code whether that > code ends up running in Rhino or a browser. > > > On Thu, May 29, 2014 at 11:02 AM, Nahuel Greco <[email protected]> wrote: > >> I know ClojureScript doesn't support run-time Vars, but reading the CLJS >> code I thought it supported Vars at compile-time, when all is executed >> inside the CLJ/JVM runtime. The following code compiles without >> assertexceptions for CLJ/JVM but when compiling CLJS the >> assert in the macro fails: >> >> ;;; src/p/macros.clj ;;; >> (ns p.macros) >> >> (defmacro check-var-at-compile-time [v] >> (println "evaluating macro for" v) >> (assert (resolve v) (str "Var " v " not found at ns " *ns*))) >> >> ;;; src/p/core.clj - compiles ok;;; >> (ns p.core [:require p.macros]) >> >> (def v1 3) >> (p.macros/check-var-at-compile-time v1) >> >> (defn foo [] >> (def v2 4) >> (p.macros/check-var-at-compile-time v2)) >> >> ;;; src-cljs/p/core.cljs - fails at compilation ;;; >> (ns p.core [:require p.macros]) >> >> (def v1 3) >> (p.macros/check-var-at-compile-time v1) >> >> (defn foo [] >> (def v2 4) >> (p.macros/check-var-at-compile-time v2)) >> >> In CLJ the vars are found and the println message is printed to the >> console when you compile it using lein run or by requiring the ns at the >> REPL. In CLJS the assertion fails in compile-time with "Assert failed: >> Var v1 not found at ns p.core" and no println message is shown. So: >> >> 1- There is a way for macros to access compile-time Vars? >> 2- When you compile the CLJS code by using lein cljsbuild once, where >> the println output from the macro at compile time is going? (a >> minor annoyance) >> >> Saludos, >> Nahuel Greco. >> >> -- >> 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.
