So what semantics do people think BlockClosure&gt;&gt;copy should have?  I think I wasn&#39;t thinking when I wrote the original of the method below.  It seems to me that all one needs is to do shallowCopy.  Returning from a copy of a block seems fine. The first method return form a method wins.  e.g. [^1] copy value should still return.  Makes no sense for it to throw an error.  So the right resolution is simply to delete postCopy.<div>
<div><br><div class="gmail_quote">On Tue, Oct 13, 2009 at 7:41 PM,  <span dir="ltr">&lt;<a href="mailto:commits@source.squeak.org">commits@source.squeak.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Andreas Raab uploaded a new version of Kernel to project The Trunk:<br>
<a href="http://source.squeak.org/trunk/Kernel-ar.266.mcz" target="_blank">http://source.squeak.org/trunk/Kernel-ar.266.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Kernel-ar.266<br>
Author: ar<br>
Time: 13 October 2009, 7:41 am<br>
UUID: f651d6ae-0be3-a54b-9166-43f4b0abaa88<br>
Ancestors: Kernel-ul.264, Kernel-ul.265<br>
<br>
Merging Kernel-ul.264,  Kernel-ul.265:<br>
<br>
- removed unnecessary #fixTemps send<br>
- removed Float &gt;&gt; #shallowCopy. Primitive 148 seems to handle this correcly.<br>
<br>
=============== Diff against Kernel-nice.263 ===============<br>
<br>
Item was changed:<br>
  ----- Method: BlockClosure&gt;&gt;postCopy (in category &#39;copying&#39;) -----<br>
  postCopy<br>
        &quot;To render a copy safe we need to provide a new outerContext that<br>
         cannot be returned from and a copy of any remoteTemp vectors.<br>
         When a block is active it makes no reference to state in its nested<br>
         contexts (this is the whole point of the indirect temps scheme; any<br>
         indirect state is either copied or in indirect temp vectors.  So we<br>
         need to substitute a dummy outerContext and copy the copiedValues,<br>
         copying anything looking like a remote temp vector.  if we accidentally<br>
         copy an Array that isn&#39;t actually an indirect temp vector we do extra work<br>
         but don&#39;t break anything.&quot;<br>
<br>
        outerContext := MethodContext<br>
                                                sender: nil<br>
                                                receiver: outerContext receiver<br>
                                                method: outerContext method<br>
+                                               arguments: #()!<br>
-                                               arguments: #().<br>
-       self fixTemps!<br>
<br>
Item was removed:<br>
- ----- Method: Float&gt;&gt;shallowCopy (in category &#39;copying&#39;) -----<br>
- shallowCopy<br>
-<br>
-       ^self - 0.0!<br>
<br>
<br>
</blockquote></div><br></div></div>