Mon, 02 Aug 2010 13:35:39 -0700
6971877: Project Coin: improve semantics of suppressed exceptions in try-with-resources
Reviewed-by: jjb
darcy@609 | 1 | /* |
darcy@609 | 2 | * @test /nodynamiccopyright/ |
darcy@609 | 3 | * @bug 6911256 6964740 6965277 6967065 |
darcy@609 | 4 | * @author Joseph D. Darcy |
darcy@609 | 5 | * @summary Check that -Xlint:arm warnings are generated as expected |
darcy@609 | 6 | * @compile/ref=ArmLint.out -Xlint:arm,deprecation -XDrawDiagnostics ArmLint.java |
darcy@609 | 7 | */ |
darcy@609 | 8 | |
darcy@609 | 9 | class ArmLint implements AutoCloseable { |
darcy@609 | 10 | private static void test1() { |
darcy@609 | 11 | try(ArmLint r1 = new ArmLint(); |
darcy@609 | 12 | ArmLint r2 = new ArmLint(); |
darcy@609 | 13 | ArmLint r3 = new ArmLint()) { |
darcy@609 | 14 | r1.close(); // The resource's close |
darcy@609 | 15 | r2.close(42); // *Not* the resource's close |
darcy@609 | 16 | // r3 not referenced |
darcy@609 | 17 | } |
darcy@609 | 18 | |
darcy@609 | 19 | } |
darcy@609 | 20 | |
darcy@609 | 21 | @SuppressWarnings("arm") |
darcy@609 | 22 | private static void test2() { |
darcy@609 | 23 | try(@SuppressWarnings("deprecation") AutoCloseable r4 = |
darcy@609 | 24 | new DeprecatedAutoCloseable()) { |
darcy@609 | 25 | // r4 not referenced |
darcy@609 | 26 | } catch(Exception e) { |
darcy@609 | 27 | ; |
darcy@609 | 28 | } |
darcy@609 | 29 | } |
darcy@609 | 30 | |
darcy@609 | 31 | /** |
darcy@609 | 32 | * The AutoCloseable method of a resource. |
darcy@609 | 33 | */ |
darcy@609 | 34 | @Override |
darcy@609 | 35 | public void close () { |
darcy@609 | 36 | return; |
darcy@609 | 37 | } |
darcy@609 | 38 | |
darcy@609 | 39 | /** |
darcy@609 | 40 | * <em>Not</em> the AutoCloseable method of a resource. |
darcy@609 | 41 | */ |
darcy@609 | 42 | public void close (int arg) { |
darcy@609 | 43 | return; |
darcy@609 | 44 | } |
darcy@609 | 45 | } |
darcy@609 | 46 | |
darcy@609 | 47 | @Deprecated |
darcy@609 | 48 | class DeprecatedAutoCloseable implements AutoCloseable { |
darcy@609 | 49 | public DeprecatedAutoCloseable(){super();} |
darcy@609 | 50 | |
darcy@609 | 51 | @Override |
darcy@609 | 52 | public void close () { |
darcy@609 | 53 | return; |
darcy@609 | 54 | } |
darcy@609 | 55 | } |