java-topology/test/langtools/tools/javac/TryWithResources/TwrForVariable4.java
russell@unturf.com 0a580b313d undefect. CWE-407 — 63 sites patched across 27 ecosystems
Authors: russell@unturf.com · brackishbert@gmail.com · foxhop.net · TimeHexOn.com

Patches, unit tests, benchmarks, whitepaper, and outreach briefs.
Public domain — no copyright claimed. Use freely.
2026-03-26 17:11:57 -04:00

45 lines
1.3 KiB
Java

/* @test /nodynamiccopyright/
* @bug 7196163
* @summary Verify that variable used as an operand to try-with-resources is rejected if it is not
* definitelly assigned before use and or not final or effectivelly final.
* @compile/fail/ref=TwrForVariable4.out -XDrawDiagnostics -Xlint:-options TwrForVariable4.java
*/
public class TwrForVariable4 implements AutoCloseable {
public static void meth() {
TwrForVariable4 uninitialized;
try (uninitialized) {
fail("must be initialized before use");
}
uninitialized = new TwrForVariable4();
TwrForVariable4 notEffectivellyFinal1 = new TwrForVariable4();
notEffectivellyFinal1 = new TwrForVariable4();
try (notEffectivellyFinal1) {
fail("not effectivelly final");
}
TwrForVariable4 notEffectivellyFinal2 = new TwrForVariable4();
try (notEffectivellyFinal2) {
notEffectivellyFinal2 = new TwrForVariable4();
fail("not effectivelly final");
}
try (notFinal) {
fail("not final");
}
}
static TwrForVariable4 notFinal = new TwrForVariable4();
static void fail(String reason) {
throw new RuntimeException(reason);
}
public void close() {
}
}