<div dir="ltr"><div dir="ltr">On Wed, Dec 28, 2022 at 4:31 PM Archie Cobbs <<a href="mailto:archie.cobbs@gmail.com" target="_blank">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">So fortunately it looks feasible to address these with @SuppressWarnings("this-escape") annotations.<div class="gmail_quote"><br><div>Adding them is probably a good thing in its own right, 
because they would serve as new "Heads up for possible 'this' escape" 
markers in the code where there were none before, especially because this gotcha can be pretty hard to spot.<font color="#888888"><br></font></div></div><div><br></div><div>I'll work on refining the 'this' escape patch to use @SuppressWarnings instead of build flags, and then update this thread when that's done.<br></div></div></blockquote><div><br></div><div>OK I have a draft of this. It's still a "draft" because I don't have the ability to build locally for every platform, so I'm having trouble provoking all the warnings from Java code that is platform-specific. And the automated github builds take a long time and then only report one more new warning, making for an impossibly slow feedback loop (if anyone is interested in helping out, that would be awesome and it's very easy).<br></div><div><br></div><div>In any case, the good news is that fewer <span style="font-family:monospace">@SupppressWarnings</span> annotations than I thought are required. In part this is because there were some redundant warnings being generated, which is now fixed.</div><div><br></div><div>Here are the updated stats. These numbers are promisingly low.</div><div><br></div><div>The first column is the number of <span style="font-family:monospace">@SupppressWarnings</span> annotations added to eliminate all of the new 'this' escape warnings I'm able to provoke.<br></div><div><br></div><div style="margin-left:40px"><span style="font-family:monospace"> #SUPPRESS    #FILES MODULE<br>        47      3077 java.base<br>         0       128 java.compiler<br>         0        18 java.datatransfer<br>        86      2899 java.desktop<br>         0        10 java.instrument<br>         0        23 java.logging<br>         4       330 java.management<br>         0        16 java.management.rmi<br>         5       199 java.naming<br>        15       142 java.net.http<br>         0        20 java.prefs<br>         4       106 java.rmi<br>         0        15 java.scripting<br>         0         1 <a href="http://java.se" target="_blank">java.se</a><br>         7       216 java.security.jgss<br>         0        30 java.security.sasl<br>         0        23 java.smartcardio<br>         1        77 java.sql<br>         0        56 java.sql.rowset<br>         0         5 java.transaction.xa<br>        39      1848 java.xml<br>        32       271 java.xml.crypto<br>         3        20 jdk.accessibility<br>         0        21 jdk.attach<br>         0        18 jdk.charsets<br>        53       333 jdk.compiler<br>         1        76 jdk.crypto.cryptoki<br>         0        35 <a href="http://jdk.crypto.ec" target="_blank">jdk.crypto.ec</a><br>         0        11 jdk.crypto.mscapi<br>         4        68 jdk.dynalink<br>         0         3 jdk.editpad<br>        10       942 jdk.hotspot.agent<br>         3        56 jdk.httpserver<br>         0         5 jdk.incubator.concurrent<br>         0        50 jdk.incubator.vector<br>         0         3 jdk.internal.ed<br>         1        61 jdk.internal.jvmstat<br>         1       113 jdk.internal.le<br>         1        52 jdk.internal.opt<br>         5       209 <a href="http://jdk.internal.vm.ci" target="_blank">jdk.internal.vm.ci</a><br>         0         1 jdk.internal.vm.compiler<br>         0         1 jdk.internal.vm.compiler.management<br>         0        18 jdk.jartool<br>         5       228 jdk.javadoc<br>         0        41 jdk.jcmd<br>        18        64 jdk.jconsole<br>        10       124 jdk.jdeps<br>        25       254 jdk.jdi<br>         0         1 jdk.jdwp.agent<br>         0       263 jdk.jfr<br>         0        77 jdk.jlink<br>         1        80 jdk.jpackage<br>         6        88 jdk.jshell<br>         0         4 jdk.jsobject<br>         1        11 jdk.jstatd<br>         0       281 jdk.localedata<br>         1        25 jdk.management<br>         0        19 jdk.management.agent<br>         0        15 jdk.management.jfr<br>         0        16 jdk.naming.dns<br>         0         8 jdk.naming.rmi<br>         0        11 <a href="http://jdk.net" target="_blank">jdk.net</a><br>         0         2 jdk.nio.mapmode<br>         0        11 jdk.random<br>         0        37 jdk.sctp<br>         0        30 jdk.security.auth<br>         0        16 jdk.security.jgss<br>         0         9 jdk.unsupported<br>         0         8 jdk.unsupported.desktop<br>         0        94 jdk.xml.dom<br>         1        14 jdk.zipfs</span></div><div><br></div><div>Code available <a href="https://github.com/archiecobbs/jdk/tree/ThisEscape" target="_blank">here</a>.<br></div><div><br></div><div>-Archie<br></div></div><br>-- <br><div dir="ltr">Archie L. Cobbs<br></div></div>