@swannodette swannodette released this Apr 6, 2015 · 2302 commits to master since this release

CLJS-1188: multi-arity fns hinder cross-module code motion

This patch makes all top level function definitions completely static,
we never issue an invoke to produce a top-level function value. This
is accomplished by duplicating and further enhancing the fn emission
logic in cljs.compiler at the macro level. The enhancements are entirely
around eliminating invokes and any property aliasing. While useful
in expression contexts, at the top level both of these approaches in
cljs.compiler defeat cross module code motion.

- test-simple should clean builds
- cljs.analyzer
   * remove :method info, never used
   * read fn information from :top-fn meta if available
- cljs.closure
   * enhance module build reporting
- cljs.core
   * move clojure.core/defn macro + helpers directly into macro ns
   * handle top level multi-arity & variadic fns
- cjls.compiler-tests
   * include some examples