Thanks Ivan and Andy, I'd appreciate a ticket in jira if only to consider 
this again before release.

Thank goodness Stu H screened that one so I can blame him. ;) 


On Wednesday, June 3, 2015 at 4:00:35 PM UTC-6, Andy Fingerhut wrote:
>
> Just to provide slightly more info, that change was made because of this 
> ticket: http://dev.clojure.org/jira/browse/CLJ-1169
>
> Andy
>
> On Wed, Jun 3, 2015 at 6:34 AM, Mike Rodriguez <mjr...@gmail.com 
> <javascript:>> wrote:
>
>> Sorry for the delay in getting back with a response to this.  I think it 
>> is fairly clear in the Clojure Compiler that there is an exception that 
>> will wrap errors that occur during macroexpansion now.
>>
>> Around here 
>> https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Compiler.java#L6627-L6649,
>>  
>> the Compiler.macroexpand1() now has a try-catch for Throwable around the 
>> evaluation of the macro invocation.
>> This was not the case in Clojure version 1.6.  See around 
>> https://github.com/clojure/clojure/blob/clojure-1.6.0/src/jvm/clojure/lang/Compiler.java#L6548-L6560
>>  
>> for a reference point.
>>
>> I'm fairly sure that is what has caused this change in behavior that 
>> broke our expectations that the exception types our code through during 
>> macroexpansion would propagate all the way back to the caller.  Again, I 
>> think this was a bad expectation to have, but it is a little tricky.
>>
>> It is a little trickier for us to have any strong assertions on the type 
>> of exception that may come from a macro now.  Compiler$CompilerException 
>> seems too dependent on the implementation.  So we've opted to just assert 
>> there would be a is-thrown? RuntimeException in these sorts of tests.  If 
>> we want to test something like an ExceptionInfo's data map, we now just 
>> have to write a helper to walk the stack trace until we find it - which 
>> would likely be a single "step" up the trace.
>>
>> A simple reproducing case:
>> *clojure-version* ;= {:major 1, :minor 7, :incremental 0, :qualifier 
>> "RC1"}
>>
>> (defmacro demo [] (throw (ex-info "fail" {})))
>>
>> (demo) ;= CompilerException clojure.lang.ExceptionInfo: fail {}, 
>> compiling:(form-init4053282905768384039.clj:1:1) 
>>
>> vs.
>> *clojure-version* ;= {:major 1, :minor 6, :incremental 0, :qualifier nil}
>>
>> (demo) ;= ExceptionInfo fail  clojure.core/ex-info (core.clj:4403)
>>
>>
>>
>> On Saturday, May 23, 2015 at 8:52:47 AM UTC-5, Alex Miller wrote:
>>>
>>> I'm not aware of any wholesale changes with respect to compiler 
>>> exceptions. Can you give an example?
>>
>>  -- 
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clo...@googlegroups.com 
>> <javascript:>
>> Note that posts from new members are moderated - please be patient with 
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+u...@googlegroups.com <javascript:>
>> 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 unsubscribe from this group and stop receiving emails from it, send an 
>> email to clojure+u...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to