1 /*
   2  * @test  /nodynamiccopyright/
   3  * @bug 6911256 6964740 6965277
   4  * @author Maurizio Cimadamore
   5  * @summary Check that resources of an intersection type forces union of exception types
   6  *          to be caught outside arm block
   7  * @compile/fail/ref=ArmIntersection02.out -XDrawDiagnostics ArmIntersection02.java
   8  */
   9 
  10 class ArmIntersection02 {
  11 
  12     static class Exception1 extends Exception {}
  13     static class Exception2 extends Exception {}
  14 
  15 
  16     interface MyResource1 extends AutoCloseable {
  17        void close() throws Exception1;
  18     }
  19 
  20     interface MyResource2 extends AutoCloseable {
  21        void close() throws Exception2;
  22     }
  23 
  24     public void test1() throws Exception1 {
  25         try(getX()) {
  26             //do something
  27         }
  28     }
  29 
  30     public void test2() throws Exception2 {
  31         try(getX()) {
  32             //do something
  33         }
  34     }
  35 
  36     <X extends MyResource1 & MyResource2> X getX() { return null; }
  37 }