| /* @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() { |
| } |
| |
| } |