<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Btw. why is the name NoModificationError? Isn’t the purpose of an Error that it is not resumable? And is NoModificationError very likely to be resumed? Like in #retryModification?<div class=""><br class=""></div><div class="">Norbert<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">Am 05.01.2018 um 14:34 schrieb Eliot Miranda <<a href="mailto:eliot.miranda@gmail.com" class="">eliot.miranda@gmail.com</a>>:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="content-type" content="text/html; charset=utf-8" class=""><div dir="auto" class=""><div class="">Hi Clément,</div><div class=""><br class=""></div><div class="">    is it too late to take a look at the VisualWorks code and use the same class names and selectors they use?  IIRC it is NoMidificationError.  It may make e.g. Gemstone's job easier if there is some consistency.<br class=""><br class=""><span style="background-color: rgba(255, 255, 255, 0);" class="">_,,,^..^,,,_ (phone)</span></div><div class=""><br class="">On Jan 5, 2018, at 5:22 AM, Clément Bera <<a href="mailto:bera.clement@gmail.com" class="">bera.clement@gmail.com</a>> wrote:<br class=""><br class=""></div><blockquote type="cite" class=""><div class=""><span class=""></span></div></blockquote><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="">Hi,</div><div class=""><br class=""></div><div class="">No this is not a bug.</div><div class=""><br class=""></div>This needs to be handled in the primitive failure code in the image, the method should be something like that :<div class=""><br class=""><div class=""><div class=""><font face="monospace, monospace" class="">Object>>instVarAt: index put: anObject</font></div><div class=""><font face="monospace, monospace" class=""><span style="white-space:pre" class="">        </span><primitive: 174 error: ec></font></div><div class=""><font face="monospace, monospace" class="">        self isReadOnlyObject ifTrue: [(ModificationForbidden for: self atInstVar: index with: anObject) signal]</font></div><div class=""><font face="monospace, monospace" class=""><span style="white-space:pre" class="">      </span>self primitiveFailed</font></div><div class=""><br class=""></div><div class="">All primitive fall-back code triggering object mutation should be rewritten this way, especially primitives such as #at:put:, #instVarAt:put:, etc.</div><div class=""><br class=""></div></div></div><div class="">Cheers</div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Fri, Jan 5, 2018 at 1:42 PM, Norbert Hartl <span dir="ltr" class=""><<a href="mailto:norbert@hartl.name" target="_blank" class="">norbert@hartl.name</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <br class=""><div style="word-wrap:break-word;line-break:after-white-space" class="">If I do <div class=""><br class=""></div><div class=""><div class="">(#foo -> #bar)</div><div class=""><span class="m_-2406158539713268726Apple-tab-span" style="white-space:pre-wrap">       </span>beReadOnlyObject;</div><div class=""><span class="m_-2406158539713268726Apple-tab-span" style="white-space:pre-wrap">      </span>value: #baz</div></div><div class=""><br class=""></div><div class="">it throws</div><div class=""><br class=""></div><div class=""><b class="">ModificationForbidden:  #foo->#bar is read-only, hence its field 2 cannot be modified with #baz</b></div><div class=""><br class=""></div><div class=""> which is as expected. But if I do</div><div class=""><br class=""></div><div class=""><div class="">(#foo -> #bar)</div><div class=""><span class="m_-2406158539713268726Apple-tab-span" style="white-space:pre-wrap">        </span>beReadOnlyObject;</div><div class=""><span class="m_-2406158539713268726Apple-tab-span" style="white-space:pre-wrap">      </span>instVarNamed: #value put: #baz</div></div><div class=""><br class=""></div><div class="">I get</div><div class=""><br class=""></div><div class=""><b class="">PrimitiveFailed: primitive #instVarAt:put: in Association failed</b></div><div class=""><br class=""></div><div class="">I think this a bug, no?</div><div class=""><br class=""></div><div class="">Norbert</div></div><br class=""></blockquote></div><br class=""><br clear="all" class=""><div class=""><br class=""></div>-- <br class=""><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr" class=""><span style="font-size:12.8px" class="">Clément Béra</span><div style="font-size:12.8px" class="">Pharo consortium engineer</div><div style="font-size:12.8px" class=""><a href="https://clementbera.wordpress.com/" target="_blank" class="">https://clementbera.wordpress.com/</a><br class=""></div><div style="font-size:12.8px" class=""><span style="line-height:16px" class="">Bâtiment B 40, avenue Halley 59650 </span><span style="font-weight:bold;line-height:16px" class="">Villeneuve d'Ascq</span></div></div></div>
</div>
</div></blockquote></div></div></blockquote></div><br class=""></div></body></html>