Much useful information is contained in Clojure's analysis compilation phase. There should be an interface to collect this information a la carte, in a nice form (ie. a map).
- build an interface to the current Compiler
- takes Form, results in Map
- test the things we can do with this information, is it useful?
- request to add some information to the compiler to provide missing information
- iterate until useful
Building interface: https://github.com/frenchy64/analyze/blob/master/src/analyze/core.clj
Redefinition of Classes at Compile time
Running `clojure.core` through the analyzer attempts to redefine functions at (what seems to be) macroexpand time.
Offending line in `clojure.core`:
I don't have a good idea how to fix this. Maybe a flag that indicates to catch a redefinition error, and then lookup the class in the cache?