<div dir="ltr"><div class="gmail_quote"><div>Hi Christoph,</div><div><br></div><div>I having trouble figuring out whether your points are primarily about semantics or mechanics..</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"><div dir="ltr"><div id="m_-612175745241190016m_-6798595446340516830gmail-m_2907134826239996098divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif" dir="ltr"><div id="m_-612175745241190016m_-6798595446340516830gmail-m_2907134826239996098divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols" dir="ltr"><p>> <span style="font-size:12pt">ModificationForbidden is resumable like a Warning, and unlike most Errors.  Perhaps it should be a Warning.</span></p>
<p></p>
<p>-1. :-) Warnings are Notifications, </p></div></div></div></blockquote><div>As are Errors.  Right?</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div id="m_-612175745241190016m_-6798595446340516830gmail-m_2907134826239996098divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif" dir="ltr"><div id="m_-612175745241190016m_-6798595446340516830gmail-m_2907134826239996098divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols" dir="ltr"><p>and Notifications are characterized by their property not to have any side-effects on the core operation unless handled by any caller.</p></div></div></div></blockquote><div>Mmmm, I'm not sure what point you're making here.  Mechanically, they're all basically the same.  See?</div><div><br></div><div>     Notification signal. 'resumed'.         "resumed"<br>     Warning signal.  'resumed'.             "(click Proceed) resumed"<br>     Error signal. 'resumed'                    "(click Proceed) resumed"<br></div><div><br></div><div>The fact that Errors can be resumed is a flat out bug, IMO, but they can...</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div id="m_-612175745241190016m_-6798595446340516830gmail-m_2907134826239996098divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif" dir="ltr"><div id="m_-612175745241190016m_-6798595446340516830gmail-m_2907134826239996098divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols" dir="ltr"><p>If a ModificationForbidden exception is resumed, the object keeps unmodified, so this is a kinda dangerous resumption.</p></div></div></div></blockquote><div>"Dangerous" how so?  There's no escaping that ModificationForbidden introduces new complexity if one isn't aware of it and how it works -- whether they use it or not, even -- could be in for some unexpected surprises in any case..</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"><div dir="ltr"><div id="m_-612175745241190016m_-6798595446340516830gmail-m_2907134826239996098divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif" dir="ltr"><div id="m_-612175745241190016m_-6798595446340516830gmail-m_2907134826239996098divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols" dir="ltr"><p>That's also why <span style="font-size:12pt">the defaultAction of a MF is not to resume the execution but </span><span style="font-size:12pt">to
 raise an UnhandledError instead, which, IMHO, </span><span style="font-size:12pt">is
</span><span style="font-size:12pt">the (only) </span><span style="font-size:12pt">right way to handle the event that a low-level operation could not be executed as
</span><span style="font-size:12pt">you would have expected</span><span style="font-size:12pt">.</span></p></div></div></div></blockquote><div>And exactly how a Warning behaves...</div><div><br></div><div>    Warning signal    "unhandled, debugger appears"</div><div>    Notification signal    "unhandled, debugger does not appear"</div><div><div>    [ Warning signal ] on: Warning do: [ : warn | warn resume ]    "handled, debugger does not appear" </div></div><div><br></div><div>In every mechanical way so far, we've seen that Warning is closer to Error than it is to Notification.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div id="m_-612175745241190016m_-6798595446340516830gmail-m_2907134826239996098divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif" dir="ltr"><div id="m_-612175745241190016m_-6798595446340516830gmail-m_2907134826239996098divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols" dir="ltr">
<p><span style="font-size:12pt">I would never expect the following to evaluate to 0 because any far-away caller could resume every possible MF:</span><br></p>
</div>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<div style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols" dir="ltr">
<p><span>#(0) at: 1 put: 1; first</span></p></div></blockquote></div></div></blockquote><div><br></div><div>Which has no bearing on whether its categorized as a Warning or Error... </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"><div dir="ltr"><div id="m_-612175745241190016m_-6798595446340516830gmail-m_2907134826239996098divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif" dir="ltr"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols" dir="ltr">
</div>
</blockquote>
<div style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols" dir="ltr">
<p>How could you write reliable code if you had to make such assumptions? I believe that this would lead us to crazy shambles where you had to question every obvious fact</p></div></div></div></blockquote><div><br></div><div>I'm sorry Christoph.  I must've missed your point.  MF needs to be able to be resumed.  Squeak allows any Error to be resumed, but this fails your semantic definition, below...</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"><div dir="ltr"><div id="m_-612175745241190016m_-6798595446340516830gmail-m_2907134826239996098divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif" dir="ltr"><div style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols" dir="ltr">
<p><span style="font-size:12pt">Warnings say: You shouldn't do this, or maybe you don't actually want to do this, but it is possible to continue doing so, so we won't stop you from doing so until you decide otherwise.</span></p></div></div></div></blockquote><div>Which is EXACTLY what ModificationForbidden is..!</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"><div dir="ltr"><div id="m_-612175745241190016m_-6798595446340516830gmail-m_2907134826239996098divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif" dir="ltr"><div style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols" dir="ltr"><p><span style="font-size:12pt">Errors say: You can't do this, and we won't permit that attempt, so </span>
you can <span style="font-size:12pt">either decide to actively ignore this error and skip to the next statement, or we'll blow up the execution (and almost ever open a Debugger).</span></p></div></div></div></blockquote><div>And why it's precisely wrong for ModificationForbidden.  See above.  If you "can't do this", why would you want to allow it to be resumed?   This is why only the most exceptional Errors are declared resumable (even though it's functionally meaningless, just "documentation").  The vast majority of Errors are not resumable.</div><div><br></div><div> - Chris </div></div></div>