--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/TryWithResources/TwrForVariable4.java Wed Nov 19 13:46:04 2014 +0100
@@ -0,0 +1,45 @@
+/* @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 main(String... args) {
+ 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() {
+ }
+
+}