Here's an example of where `ensure:` doesn't quite do what it says on the tin:
[ [Processor activeProcess terminate] ensure: [ Transcript cr; show: 'outer1'. [nil error: 'aiee'] ensure: [Transcript cr; show: 'inner']. Transcript cr; show: 'outer2'. ] ] fork
Expected output:
outer1 (debugger appears; click 'abandon') inner
(or possibly:
outer1 (debugger appears; click 'abandon') inner outer2
which is what you get if you change "Processor activeProcess terminate" to "1 + 2" above... but this also seems odd.)
Actual output:
outer1 (no debugger appears, nothing more happens)
Are my expectations out-of-line, or is there a problem worth investigating here?
"--"
I think it's worth noting that a related program:
[ [Processor activeProcess terminate] ensure: [ [ Transcript cr; show: 'outer1'. [nil error: 'aiee'] ensure: [ Transcript cr; show: 'inner']. Transcript cr; show: 'outer2'. ] on: Error do: [:ex | Transcript cr; show: ex] ] ] fork
yields the reasonable output
outer1 Error: aiee inner
Cheers, Tony