On Jun 8, 8:46 am, Allen Rohner <
aroh...@gmail.com> wrote:
> Ok, I found the bug.
>
> In Compiler.java, eval() performs the following operations:
>
> 1) push a binding for LOADER
> 2) enter a try block
> 3) push a binding for LINE
> 4) enter another try block
> 5) do some work ( macro expand, eval, invoke, etc)
> 6) finally block that pops the bindings created in #3
> 7) catch block that catches compiler exceptions, and prints LINE
> 8) finally block that pops the bindings created in #1
>
> The error here is that LINE is printed after its binding is popped.
> The catch block should be a part of the the try in #4, rather than the
> try created in #2. I've tried this fix, and it works for me.
>
> Patch welcome?
>