Comment made by: ataggart
To better facilitate understanding of the changes, I've broken them up into two patches, each with a number of isolable, incremental commits:
reorg-reflector.patch: Moves the reflection/invocation code from Compiler to Reflector, and eliminates redundant code. The result is a single code base for resolving methods/constructors, which will allow for altering that mechanism without excess external coordination. This contains no behaviour changes.
prim-conversion.patch: Depends on the above. Alters the method/constructor resolution process:
more consistent with java resolution, especially when calling pre-1.5 APIs
adds support for widening conversion of primitive numerics of the same category (this is more strict than java, and more clojuresque)
* adds support for wildcard matches at compile-time (i.e., you don't need to type-hint every arg to avoid reflection).
This also provides a base to add further features, e.g., CLJ-666.