<div dir="ltr">On Wed, Apr 10, 2013 at 12:22 PM, Anthony Ramine <span dir="ltr"><<a href="mailto:n.oxyde@gmail.com" target="_blank">n.oxyde@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hello Björn,<br>
<br>
I'm not sure I understand what you mean, should I add my example function into receive_SUITE.erl as is to test that? I'm not sure that would demonstrate anything in the long term as my other cooking patch move-let-into-seq makes the culprit code where a reference is live in two Y registers disappear.<br>

<br></blockquote><div><br></div><div style>OK. I realize that it is hard or impossible to</div><div style>construct a test case that would test something</div><div style>that is not already tested by existing test cases.</div>
<div style><br></div><div style>Your patch correctly fixes the bug, but I</div><div style>have some comments and suggestions</div><div style>for further simplification:</div><div style><br></div><div style>The name of the RefReg variable is now</div>
<div style>misleading, since it contains a register set.</div><div style>(Suggested new name: RefRegSet, RefRegs,</div><div style>or RefSet.)</div><div style><br></div><div style>The comment for opt_ref_used/4 needs to</div>
<div style>be updated.</div><div style><br></div><div style>In opt_recv/5, my original code looked like:</div><div><br></div><div><div>    case regs_to_list(R) of</div><div><span class="" style="white-space:pre">    </span>[{y,_}=RefReg] -> ...</div>
</div><div><br></div><div style>The matching of {y,_} is just a cheap</div><div style>assertion (only added because it was</div><div style>almost free).</div><div style><br></div><div style>Since your new code sends the register</div>
<div style>set to the opt_ref_used/4, there is no</div><div style>longer any need to convert the register</div><div style>set to a list. Thus we can write:</div><div style><br></div><div style>  case regs_empty(R) of</div>
<div style>     false -> ...</div><div style><br></div><div style>and remove the regs_to_list/1 function.</div><div style><br></div><div style>Finally, for clarity I would add parenthesis</div><div style>in is_ref_msg_comparison/3:</div>
<div style><br></div><div style><div>is_ref_msg_comparison([R1,R2], RefReg, Regs) -></div><div>    (regs_is_member(R2, RefReg) andalso regs_is_member(R1, Regs)) orelse</div><div>    (regs_is_member(R1, RefReg) andalso regs_is_member(R2, Regs)).</div>
</div><div style><br></div><div><br></div></div>-- <br>Björn Gustavsson, Erlang/OTP, Ericsson AB
</div></div>