It seems to me this problem can could be made more minimal than it is. As it is, it seems like Google Closure itself might be rewriting the code. I don't see any other way for a gensym to end up used over "this".
Need more information via a more minimal case. David On Sat, Jun 6, 2015 at 5:56 AM, Dusan Miloradovic < [email protected]> wrote: > Sorry, I thought it was the well known issue. Here is the simplified macro: > > (defmacro custom-this [] > (list 'js* "this") > ) > > (defmacro test-comp > [tsym tfields bsym & impls] > `(defn ~tsym [~@tfields] > ~@(map (fn[c] > `(this-as this# > (aset this# ~(str c) ~c))) tfields) > ~(if (symbol? (first impls)) > `(goog/base (custom-this)) > (let [[constr-name params & bd] (first impls) > mta (meta constr-name) > ovrrd (when mta (= 'override (:tag mta))) > thsym (gensym "this") > ] > `(this-as ~thsym > ~(when-not ovrrd > ;`(goog/base ~thsym ~@params) > `(goog/base (custom-this) ~@params) > ) > ~@bd))) > (this-as this## this##) > ) > ) > > and the test case in the cljs file: > > (mm/test-comp TestComponent [name] goog.ui.Component) > > generates the following js code: > > testns.TestComponent = (function testns$TestComponent(name){ > var this__18400__auto___26494 = this; > (this__18400__auto___26494["name"] = name); > > var this26491_26495 = this; > var G__26493_26496 = this; > goog.base(G__26493_26496); > > var this_SHARP___18401__auto__ = this; > return this_SHARP___18401__auto__; > }); > > and that fails during the advanced compilation phase with: > ERROR: JSC_BASE_CLASS_ERROR. incorrect use of goog.base: First argument > must be 'this'. > > Thanks, > Dusan > > -- > 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.
