[squeak-dev] The Trunk: Kernel-nice.1384.mcz
Jaromir Matas
m at jaromir.net
Thu Apr 22 21:40:35 UTC 2021
Hi Nicolas, Jacob,
Apologies if this has nothing to do with your issue (I’m unable to follow
really) but I can see an inconsistency in the exception ‘return’ behavior:
There are two types of return – explicit and implicit and I expected them to
behave identically, however it doesn’t seem to be the case:
[self error] on: Error do: [:ex | ex return ]
---> rearms handlerActive
[self error] on: Error do: [:ex | ex ]
---> doesn’t rearm handlerActive
The problem (if there’s any) is here:
handleSignal: exception
“…”
self tempAt: 3 put: false. "disable self while executing
handle block"
val := [(self tempAt: 2) cull: exception]
ifCurtailed: [self tempAt: 3
put: true].
---> self return: val "return from self if not otherwise directed in
handle block"
`self return: val` is only executed if the handle block doesn’t contain an
explicit exception message (retry, return etc) but unlike its explicit `ex
return` counterpart it has no unwind block...
In any case – is this an issue? Should the two forms of return really behave
identically as I assumed?
Thanks,
Jaromir
-----
^[^ Jaromir
--
Sent from: http://forum.world.st/Squeak-Dev-f45488.html
More information about the Squeak-dev
mailing list
|