I see where the problem is and I've got a possible fix. I'll go ahead and open a ticket; I'll be right back with a link.
Cheers, Michał On 3 July 2012 04:40, David Nolen <dnolen.li...@gmail.com> wrote: > Please open a ticket with these details: > http://dev.clojure.org/jira/browse/CLJS > > Thanks! > > David > > On Mon, Jul 2, 2012 at 10:37 PM, Robert Marianski <r...@marianski.com> wrote: >> I'm getting an error when trying to call a multimethod in a certain >> scenario. I'm unfortunately not able to reproduce this when running it >> as a test case with v8. But, I was able to trim it down to the following >> test case which fails for me in a browser (with a connected repl). >> >> >> (defmulti foo (fn [a b] [(:foo a) (:foo b)])) >> (defmethod foo [:foo :bar] [a b] :foobar) >> (defmethod foo :default [a b] :default) >> >> ;; this fails with an error - expecting default case >> (foo {} {}) >> ;; succeeds -> :foobar >> (foo {:foo :foo} {:foo :bar}) >> >> However, with slight modifications, it works for me. >> >> (defmulti bar (fn [& args] (vec (map :foo args)))) >> (defmethod bar [:foo :bar] [a b] :foobar) >> (defmethod bar :default [a b] :default) >> >> ;; succeeds -> default case >> (bar {} {}) >> >> Interestingly enough, it works with this variation too: >> (defmulti baz (fn [a b] (vector (:foo a) (:foo b)))) >> (defmethod baz [:foo :bar] [a b] :foobar) >> (defmethod baz :default [a b] :default) >> >> ;; also succeeds -> default case >> (baz {} {}) >> >> >> The error that I'm getting when it fails is: >> obj is undefined >> return obj[goog.UID_PROPERTY_] || (obj[goog.UID_PROPERTY_] = >> ++goog.uidCounter_ >> >> (This is in the definition of goog.getUid) >> >> >> I tried to debug a little bit, and it looks like it's failing when >> looking up the multimethod in the cache. The obj is undefined at that >> point. >> >> >> Robert >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clojure@googlegroups.com >> Note that posts from new members are moderated - please be patient with your >> first post. >> To unsubscribe from this group, send email to >> clojure+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with your > first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en