[squeak-dev] stepping over non local return in a protected block

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Fri Apr 16 21:37:37 UTC 2021


When debugging things like this:

    [^2] ensure: [Transcript cr; show: 'done'].

if we step into the protected block [^2], then step over ^2, we
incorrectly get a BlockCannotReturn.
In deeper stacks, I saw some weirder behaviour
(when debugging test03EventHandler I put a halt into
    m on: #mouseDown send: #value: to:[:evt|
        self halt.
        evt redButtonPressed ifTrue:[m color: Color red].
        evt yellowButtonPressed ifTrue:[m color: Color yellow].
        evt blueButtonPressed ifTrue:[m color: Color blue]].
and stepped over such a [^...] ensure: - result is very hard to
understand/trace)

I'm pretty sure this has been thoroughly investigated and discussed
during the last year or so (I remember of some infinite debugger
thread and some hard work of Christoph).

After the integration of many fixes in exception handling, process
termination, unwinding, and simulation machinery, thanks to Jaromir,
Marcel, Christoph, ... (apologies to whoever I forgot), maybe it's
time to revisit this problem.

Christoph, if you still have brain cells unburnt by this problem ;)


More information about the Squeak-dev mailing list