<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="">You mean<div class=""><br class=""></div><div class=""><div class=""><span class="Apple-tab-span" style="white-space:pre">   </span><primitive: 174 error: ec></div><div class=""><span class="Apple-tab-span" style="white-space:pre">  </span>self isReadOnlyObject </div><div class=""><span class="Apple-tab-span" style="white-space:pre">               </span>ifTrue: [(ModificationForbidden for: self atInstVar: index with: anObject) signal]</div><div class=""><span class="Apple-tab-span" style="white-space:pre">                </span>ifFalse: [ self primitiveFailed ]</div><div class="">?</div><div class=""><br class=""></div><div class="">Norbert</div><div><br class=""><blockquote type="cite" class=""><div class="">Am 05.01.2018 um 14:22 schrieb Clément Bera <<a href="mailto:bera.clement@gmail.com" class="">bera.clement@gmail.com</a>>:</div><br class="Apple-interchange-newline"><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><br class=""></div></body></html>