The analyzer in Compiler.java forces evaluation of lazyseq literals, but loses the compile time original metadata of that form, meaning that a type hint will be lost.
Example demonstrating this issue:
Forcing the concat call to an ASeq rather than a LazySeq fixes this issue:
This ticket blocks http://dev.clojure.org/jira/browse/CLJ-1444 since clojure.core/sequence might return a lazyseq.
This bug affected both tools.analyzer and tools.reader and forced me to commit a fix in tools.reader to work around this issue, see: http://dev.clojure.org/jira/browse/TANAL-99
The proposed patch trivially preserves the form metadata after realizing the lazyseq
Approach: Keep a copy of the original form, and apply its metadata to the realized lazyseq
Screened by: Alex Miller