<div dir="auto"><div>Hello! <div dir="auto"><br></div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Dec 10, 2024, 18:57 Archie Cobbs <<a href="mailto:archie.cobbs@gmail.com">archie.cobbs@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr">On Fri, Oct 25, 2024 at 10:02 AM Archie Cobbs <<a href="mailto:archie.cobbs@gmail.com" target="_blank" rel="noreferrer">archie.cobbs@gmail.com</a>> wrote:</div><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 dir="ltr"><div class="gmail_quote"><div>Is there some quasi-consensus to go forward with this idea for fixing basic for() loops?</div></div></div></blockquote><div><br></div><div>(Hmm, nobody responded yes and nobody responded no...)<br></div></div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Just for the record: I previously said that I don't think we should salvage classic for loop, because it's awful. Instead, we should invest into adding first-class ranges to Java, or at least library support, to be able to write something like</div><div dir="auto"><br></div><div dir="auto">for(int i: rangeClosed(1, 3)) {</div><div dir="auto">...</div><div dir="auto">}</div><div dir="auto"><br></div><div dir="auto">This way, the lambda problem will be solved automatically, and people will get much more readable and much less errorprone way to iterate over integers.</div><div dir="auto"><br></div><div dir="auto">I still stick to this point of view.</div><div dir="auto"><br></div><div dir="auto">With best regards, </div><div dir="auto">Tagir Valeev</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div></div><div><br></div><div>Now that JDK 24 is out of the way, I'd like to get some kind of final adjudication on whether to continue pursuing this idea from this list.</div><div><div><br></div><div>If everyone is good with doing this then I'm happy to continue working on it, otherwise I'm happy to 
shelve it. I would just like to tie up the loose end one way or another.<br></div><div><br></div></div><div>To recap: the idea is to allow loop variables declared in basic (old style) for() loops to be captured in the body of the loop as long as they are not reassigned in the body of the loop (but they may be reassigned in the loop step). For example:</div><div style="margin-left:40px"><pre><span>for</span> (<span>int</span> <span>i</span> = <span>1</span>; <span>i</span> <= <span>3</span>; <span>i</span>++) {
    <span>Runnable</span> <span>r</span> = () -> <span>System</span>.<span>out</span>.<span>println</span>(i);   // allow this
}</pre></div><div><div>There was lots of good discussion and we did narrow down the idea to what's described above. However I'm unclear on whether to now proceed with asking for additional reviews, etc. and don't want to presume.</div><div><br></div><div>If nobody replies I won't ask again :)<br></div><br><div>FWIW here's what has been drafted so far (all subject to improvement of course):<br></div><div><br></div><div>Bug: <a href="https://bugs.openjdk.org/browse/JDK-8341782" target="_blank" rel="noreferrer">https://bugs.openjdk.org/browse/JDK-8341782</a></div><div>CSR: <a href="https://bugs.openjdk.org/browse/JDK-8341783" target="_blank" rel="noreferrer">https://bugs.openjdk.org/browse/JDK-8341783</a><br>JEP: <a href="https://bugs.openjdk.org/browse/JDK-8341785" target="_blank" rel="noreferrer">https://bugs.openjdk.org/browse/JDK-8341785</a><br>JLS: <a href="https://bugs.openjdk.org/browse/JDK-8341786" target="_blank" rel="noreferrer">https://bugs.openjdk.org/browse/JDK-8341786</a><br>PR: <a href="https://github.com/openjdk/jdk/pull/21415" target="_blank" rel="noreferrer">https://github.com/openjdk/jdk/pull/21415</a></div><div><br></div><div>Thanks,</div><div>-Archie</div><div><br></div></div></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature">Archie L. Cobbs<br></div></div>
</blockquote></div></div></div>