darcy@609: /* darcy@609: * @test /nodynamiccopyright/ darcy@840: * @bug 6911256 6964740 6965277 7013420 darcy@609: * @author Maurizio Cimadamore darcy@609: * @summary Test that resource variables are implicitly final darcy@609: * @compile/fail/ref=ImplicitFinal.out -XDrawDiagnostics ImplicitFinal.java darcy@609: */ darcy@609: darcy@609: import java.io.IOException; darcy@609: darcy@609: class ImplicitFinal implements AutoCloseable { darcy@609: public static void main(String... args) { darcy@609: try(ImplicitFinal r = new ImplicitFinal()) { darcy@609: r = null; //disallowed darcy@609: } catch (IOException ioe) { // Not reachable darcy@609: throw new AssertionError("Shouldn't reach here", ioe); darcy@609: } darcy@840: darcy@840: try(@SuppressWarnings("unchecked") ImplicitFinal r1 = new ImplicitFinal()) { darcy@840: r1 = null; //disallowed darcy@840: } catch (IOException ioe) { // Not reachable darcy@840: throw new AssertionError("Shouldn't reach here", ioe); darcy@840: } darcy@840: darcy@840: try(final ImplicitFinal r2 = new ImplicitFinal()) { darcy@840: r2 = null; //disallowed darcy@840: } catch (IOException ioe) { // Not reachable darcy@840: throw new AssertionError("Shouldn't reach here", ioe); darcy@840: } darcy@840: darcy@840: try(final @SuppressWarnings("unchecked") ImplicitFinal r3 = new ImplicitFinal()) { darcy@840: r3 = null; //disallowed darcy@840: } catch (IOException ioe) { // Not reachable darcy@840: throw new AssertionError("Shouldn't reach here", ioe); darcy@840: } darcy@609: } darcy@609: public void close() throws IOException { darcy@609: throw new IOException(); darcy@609: } darcy@609: }