<body><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
Hi Christoph,<div><br></div><div>you are proposing an interface to avoid having to deal with Exception >> #pass and #resume:. I like #on:when:do:, maybe renamed to: #on:satisfying:do:. I do not like your & syntax because it would mix Exception, ExceptionSet, and BlockClosure -- which may be hard to understand and debug.</div><div><br></div><div>Bset,</div><div>Marcel</div><div class="mb_sig"></div><blockquote class='history_container' type='cite' style='border-left-style:solid;border-width:1px; margin-top:20px; margin-left:0px;padding-left:10px;'>
<p style='color: #AAAAAA; margin-top: 10px;'>Am 09.10.2020 03:15:43 schrieb Chris Muller <asqueaker@gmail.com>:</p><div style='font-family:Arial,Helvetica,sans-serif'>
<div dir="ltr"><div dir="ltr"></div><div class="gmail_quote"><div class="gmail_attr">Hi Christoph,</div><div class="gmail_attr"><br></div><div class="gmail_attr">Are these equivalent --<br></div><div class="gmail_attr"><br></div><div class="gmail_attr">On Thu, Jan 2, 2020 at 7:58 PM Thiede, Christoph <<a href="mailto:Christoph.Thiede@student.hpi.uni-potsdam.de" target="_blank">Christoph.Thiede@student.hpi.uni-potsdam.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Outlook jumbled my message completely. Here the examples again:<br>
<br>
[self model merge]<br>
on: MCMergeResolutionRequest<br>
& [:request | request merger conflicts notEmpty]<br>
do: [:request | request resume: true].<br></blockquote><div><br></div><div>equal to:</div><div><br></div><div> [self model merge]</div><div> on: MCMergeResolutionRequest</div><div> do: </div><div> [:request | request merger conflicts notEmpty</div><div> ifTrue: [request resume: true]</div><div> ifFalse: [request pass] ]</div><div><br></div><div>?</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
[client unusedBytecode]<br>
on: MessageNotUnderstood<br>
& [:ex | ex receiver == client]<br>
& [:ex | ex message selector == #unusedBytecode]<br>
do: [self error: 'unusedBytecode'].<br></blockquote><div><br></div><div>equal to</div><div><br></div><div> [client unusedBytecode]</div><div> on: MessageNotUnderstood</div><div> do:</div><div> [:ex | (ex receiver == client and: [ ex message selector == #unusedBytecode ])</div><div> ifTrue: [ self error: 'unusedBytecode' ]</div><div> ifFalse: [ ex pass ] ]</div><div><br></div><div>?</div><div><br></div><div>Not sure if I fully understood it, but is it just a reformat of the syntax? Or something more empowering?</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
references := [self resolvePackageSpecReferences: packageSpec gofer: gofer]<br>
on: [self class retryPackageResolution] & (Error , GoferRepositoryError)<br>
do: [:ex | retryCount >= 2 ifFalse: [<br>
ex return: #() ]<br>
on: [self class retryPackageResolution] & GoferRepositoryError.<br>
Transcript showln: 'gofer repository error: '; show: ex description printString; show: '...ignoring'.<br>
(repositoryError := ex) resume: #()]. </blockquote><div><br></div><div>(wait, is that, #on:do:on: ? I'm confused on this one...)</div><div><br></div><div> - Chris</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
sz := 1024*1024*1024*1024.<br>
self<br>
should: [Array new: sz]<br>
raise: OutOfMemory, (Error & [:ex | ex messageText includesSubstring: 'basicNew: with invalid argument']).<br></blockquote><div><br></div></div></div>
</div></blockquote>
</div></body>