<div dir="ltr">On Mon, May 15, 2023 at 3:00 PM Guy Steele <<a href="mailto:guy.steele@oracle.com">guy.steele@oracle.com</a>> wrote:<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>12.5 In the list of six steps for processing a constructor, the logic is a bit difficult to follow because of nonparallelism, recapitulation, and a mixture of explicit “goto” instructions with drop-through. I suggest this refactored structure:</div></blockquote><div><br></div><div>That's a nice cleanup - thanks.<br></div><div><br></div><div>It looks like step 4 is redundant:<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div>1. Assign the arguments for the constructor to newly created parameter variables for this constructor invocation.<div>
<div><br>
</div>
<div>2. If this constructor does not contain an explicit constructor invocation (8.8.7.1), go to step 4; otherwise, continue with step 3.</div>
<div><br>
</div>
<div>3. Execute the BlockStatements, if any, of the prologue of the constructor body. If execution of any statement completes abruptly, then execution of the constructor completes abruptly for the same reason; otherwise, continue with step 4.</div>
<div><br>
</div>
<div>4. If this constructor does not contain an explicit constructor invocation (8.8.7.1), go to step 6; otherwise, continue with step 5.</div></div></div></div></blockquote><div><br></div><div>So step 4 can be removed, and step 2 can "goto step 6" (of course once step 4 is removed, steps 5+ get renumbered so that change ultimately becomes "goto step 5").<br></div><div><br></div><div>-Archie<br></div></div><br><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature">Archie L. Cobbs<br></div></div>