In the example, you can find a reference to the actual macro (line and name)
in the second part (Caused by:). By the nature of macro's I think this might
be not the most human way to get the line number, but surely the way the JVM
sees it.

2010/2/11 John Williams <shponglesp...@gmail.com>

> I'm concerned specifically about exceptions that occur during macro
> expansion.  As often as not, these exceptions are the result of calling the
> macro with incorrect arguments rather than any problem in the macro itself,
> but the stack trace doesn't contain enough information to locate the
> offending macro call.  For instance, the stack trace I posted reports
> macro-fail.clj line 0 as the ultimate source of the problem, even though the
> macro is called on line 3.
>
> I've done some more tests using the 1.0 release as well as the latest head
> from git, and in both versions, the stack trace contains the name of the
> file where the macro is called, but the line number is always 0.  Since the
> file name is correct, I think my comments about hacking the reader were
> off-base, but there is definitely a problem with reporting the correct line
> number.
>
> On Mon, Feb 8, 2010 at 2:08 PM, Michał Marczyk 
> <michal.marc...@gmail.com>wrote:
>
>> On 8 February 2010 20:11, John R. Williams <shponglesp...@gmail.com>
>> wrote:
>> > ;; macro-fail.clj
>> > (defmacro broken [] (/ 0 0))
>> > (broken)
>> > [ ... ]
>> > As you can see, line 3, where the macro is used, appears nowhere in
>> > the stack trace.
>>
>> That's because execution never reaches this point, because the (/ 0 0)
>> bit gets executed at macro expansion time. You'd have to syntax-quote
>> it to fail at runtime:
>>
>> (defmacro broken [] `(/ 0 0))
>>
>> (A regular quote would probably also do.)
>>
>> Also, note the user$broken ... line in your stack trace -- it does
>> contain a useful indication of the source of the problem.
>>
>> Sincerely,
>> Michał
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com<clojure%2bunsubscr...@googlegroups.com>
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>>
>
>  --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com<clojure%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
>



-- 
Communication is essential. So we need decent tools when communication is
lacking, when language capability is hard to acquire...

- http://esperanto.net  - http://esperanto-jongeren.nl

Linux-user #496644 (http://counter.li.org) - first touch of linux in 2004

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to