I noticed that it works fine to just do (:require [goog.async.Deferred :as d]) and to use (goog.async.Deferred.) to call the constructor (in this case Deferred is also used as a namespace, so require makes sense).
With :require w/o :as support, you'd have (:require goog.async.Deferred) ... (goog.async.Deferred.), right? So with :import, (:import goog.async.Deferred) ... (Deferred.)? I would have expected (:import goog.async.Deferred.CancelledError) to cause trouble here, but in this case at least, deferred.js also provides goog.async.Deferred.CancelledError. On Monday, June 11, 2012 11:49:05 AM UTC-5, David Nolen wrote: > > This is an known existing issue. Using :require to important constructors > just doesn't make sense. > > 2 patches I think could help here: > > 1) support for :import > 2) support for :require w/o :as > > Anyone game to submit some fixes? > > David > > On Thu, Jul 28, 2011 at 10:41 AM, Marko Kocić <marko.ko...@gmail.com>wrote: > >> Hi all, >> >> When dealing with ClojureScript and Closure library it happens pretty >> often that Closure namespace is in the same time constructor for some >> object. >> >> Take a look for this example: >> >> (ns notepad >> (:require >> [goog.dom :as dom] >> [goog.ui.Zippy :as Zippy])) >> >> First, require forces me to require goog.ui.Zippy as Zippy and later in >> the code I have to use fully qualified name instead of provided one. >> >> This works >> (goog.ui.Zippy. headerElement contentElement) >> >> This doesn't work, since Zippy is namespace declaration >> (Zippy. headerElement contentElement) >> >> I know that we can't have both namespace and function with the same name, >> but this is pretty frequent situation in Closure library, and is a bit >> awkward. >> One solution would be that namespace :as symbol is specialcased so that >> without namespace prefix Zippy and Zippy. works like a regular function, >> and when in place of namespace prefix, it works as a namespace prefix. That >> would be pretty in line with Closure library itselfi. >> >> Then we would be able to use >> (require [goog.ui.Zippy :as Zippy]) >> (def z (Zippy. "ttt" "sss")) ;; same as calls goog.ui.Zippy. >> (Zippy/someMethod x) ;; same as goog.ui.Zippy >> >> What would be your proposal for this? >> >> -- >> 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