I've filed a new issue, CLJ-1079:
http://dev.clojure.org/jira/browse/CLJ-1079
In short, this changes the reader slightly to ensure that explicit :line metadata in loaded code is used in preference to line numbers provided by a LineNumberingPushbackReader, if one is being used. More details and context are in the issue description, but here's a quick REPL demonstration illustrating the problem:
=> (meta (read (clojure.lang.LineNumberingPushbackReader.
(java.io.StringReader. "^{:line 66} ()"))))
{:line 1}
...this is in contrast to the (correct, IMO) behaviour when one does not use a LineNumberingPushbackReader (this is essentially what read-string does):
=> (meta (read (java.io.PushbackReader.
(java.io.StringReader. "^{:line 66} ()"))))
{:line 66}
The patch attached to the issue is minor IMO, but I wanted to open a thread here as well; I seem to remember this being a topic at some point in the past, but I couldn't find that discussion.
Cheers,
- Chas