<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jun 16, 2014, at 11:29 AM, Michael Zhou wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">
  

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  
  <div bgcolor="#FFFFFF" text="#000000">
    Thanks for the clarification, one detail about the order between
    incrementing and setting $$lastIteration_i:<br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <pre style="white-space: pre-wrap; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">{
   let i = $$lastIteration_i;   //create and initialize per iteration i
   if (!(i<10)) break;
  {
      let i;
   }
<b>   i++;
   $$lastIteration_i = i;</b>
}

Should it be<b>
$$lastIteration_i = i;
i++;

</b><font face="sans-serif">instead, given what the spec says?</font>
</pre></div></blockquote><div>neither of these desugarings is perfectly in alignment with the actual spec. which doesn't actually use a temp variable in this manner.</div><div><br></div><div>A closer match would be:</div><div><br></div><div><span class="Apple-style-span" style="font-family: monospace; white-space: pre-wrap; "><b>$$lastIteration_i = i;</b></span><br><div bgcolor="#FFFFFF" text="#000000"><pre style="white-space: pre-wrap; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: start; text-indent: 0px; text-transform: none; word-spacing: 0px; -webkit-text-stroke-width: 0px; "><b>$$lastIteration_i++</b><b>;</b></pre></div><div><br></div></div><div>The value of the new i for the next iteration is the incremented value of the previous i, but the value of the previous i is not incremented which is important for the cases where a closure has captured the previous i.</div><div><br></div><div>Allen</div><div><br></div><div><br></div><div><br></div></div></body></html>