1 /*
   2  * @test  /nodynamiccopyright/
   3  * @bug 6911256 6964740 6965277 7013420
   4  * @author Maurizio Cimadamore
   5  * @summary Test that resource variables are implicitly final
   6  * @compile/fail/ref=ImplicitFinal.out -XDrawDiagnostics ImplicitFinal.java
   7  */
   8 
   9 import java.io.IOException;
  10 
  11 class ImplicitFinal implements AutoCloseable {
  12     public static void main(String... args) {
  13         try(ImplicitFinal r = new ImplicitFinal()) {
  14             r = null; //disallowed
  15         } catch (IOException ioe) { // Not reachable
  16             throw new AssertionError("Shouldn't reach here", ioe);
  17         }
  18 
  19         try(@SuppressWarnings("unchecked") ImplicitFinal r1 = new ImplicitFinal()) {
  20             r1 = null; //disallowed
  21         } catch (IOException ioe) { // Not reachable
  22             throw new AssertionError("Shouldn't reach here", ioe);
  23         }
  24 
  25         try(final ImplicitFinal r2 = new ImplicitFinal()) {
  26             r2 = null; //disallowed
  27         } catch (IOException ioe) { // Not reachable
  28             throw new AssertionError("Shouldn't reach here", ioe);
  29         }
  30 
  31         try(final @SuppressWarnings("unchecked") ImplicitFinal r3 = new ImplicitFinal()) {
  32             r3 = null; //disallowed
  33         } catch (IOException ioe) { // Not reachable
  34             throw new AssertionError("Shouldn't reach here", ioe);
  35         }
  36     }
  37     public void close() throws IOException {
  38         throw new IOException();
  39     }
  40 }