langtools/test/tools/javac/TryWithResources/TwrForVariable4.java
changeset 27844 8b5d79870a2f
equal deleted inserted replaced
27843:a032fe725c78 27844:8b5d79870a2f
       
     1 /* @test /nodynamiccopyright/
       
     2  * @bug 7196163
       
     3  * @summary Verify that variable used as an operand to try-with-resources is rejected if it is not
       
     4  *          definitelly assigned before use and or not final or effectivelly final.
       
     5  * @compile/fail/ref=TwrForVariable4.out -XDrawDiagnostics -Xlint:-options TwrForVariable4.java
       
     6  */
       
     7 public class TwrForVariable4 implements AutoCloseable {
       
     8     public static void main(String... args) {
       
     9         TwrForVariable4 uninitialized;
       
    10 
       
    11         try (uninitialized) {
       
    12             fail("must be initialized before use");
       
    13         }
       
    14         uninitialized = new TwrForVariable4();
       
    15 
       
    16         TwrForVariable4 notEffectivellyFinal1 = new TwrForVariable4();
       
    17 
       
    18         notEffectivellyFinal1 = new TwrForVariable4();
       
    19 
       
    20         try (notEffectivellyFinal1) {
       
    21             fail("not effectivelly final");
       
    22         }
       
    23 
       
    24         TwrForVariable4 notEffectivellyFinal2 = new TwrForVariable4();
       
    25 
       
    26         try (notEffectivellyFinal2) {
       
    27             notEffectivellyFinal2 = new TwrForVariable4();
       
    28             fail("not effectivelly final");
       
    29         }
       
    30 
       
    31         try (notFinal) {
       
    32             fail("not final");
       
    33         }
       
    34     }
       
    35 
       
    36     static TwrForVariable4 notFinal = new TwrForVariable4();
       
    37 
       
    38     static void fail(String reason) {
       
    39         throw new RuntimeException(reason);
       
    40     }
       
    41 
       
    42     public void close() {
       
    43     }
       
    44 
       
    45 }