| // Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| package twrcloseresource; |
| |
| import java.util.jar.JarFile; |
| |
| public class TwrCloseResourceTest implements Iface { |
| public static void main(String[] args) { |
| TwrCloseResourceTest o = new TwrCloseResourceTest(); |
| o.foo(args[0]); |
| o.iFoo(args[0]); |
| bar(args[0]); |
| Iface.iBar(args[0]); |
| } |
| |
| synchronized void foo(String arg) { |
| try { |
| try (JarFile a = new JarFile(arg)) { |
| System.out.println("A"); |
| } catch (Exception e) { |
| System.out.println("B"); |
| try (JarFile a = new JarFile(arg)) { |
| System.out.println("C"); |
| } |
| System.out.println("D"); |
| throw new RuntimeException(); |
| } |
| try (JarFile a = new JarFile(arg)) { |
| System.out.println("E"); |
| } |
| } catch (Exception e) { |
| System.out.println("F"); |
| } |
| try (JarFile a = new JarFile(arg)) { |
| System.out.println("G"); |
| try (JarFile b = new JarFile(arg)) { |
| System.out.println("H"); |
| } finally { |
| System.out.println("I"); |
| throw new RuntimeException(); |
| } |
| } catch (Exception e) { |
| System.out.println("J"); |
| } |
| System.out.println("K"); |
| } |
| |
| static synchronized void bar(String arg) { |
| try (JarFile a = new JarFile(arg)) { |
| System.out.println("1"); |
| throw new RuntimeException(); |
| } catch (Exception e) { |
| System.out.println("2"); |
| } |
| try (JarFile a = new JarFile(arg)) { |
| System.out.println("3"); |
| throw new RuntimeException(); |
| } catch (Exception e) { |
| System.out.println("4"); |
| } |
| try (JarFile a = new JarFile(arg)) { |
| System.out.println("5"); |
| throw new RuntimeException(); |
| } catch (Exception e) { |
| System.out.println("6"); |
| } |
| try (JarFile a = new JarFile(arg)) { |
| System.out.println("7"); |
| throw new RuntimeException(); |
| } catch (Exception e) { |
| System.out.println("8"); |
| } |
| System.out.println("99"); |
| } |
| } |
| |
| interface Iface { |
| default void iFoo(String arg) { |
| try { |
| try (JarFile a = new JarFile(arg)) { |
| System.out.println("iA"); |
| } catch (Exception e) { |
| System.out.println("iB"); |
| try (JarFile a = new JarFile(arg)) { |
| System.out.println("iC"); |
| } |
| System.out.println("iD"); |
| throw new RuntimeException(); |
| } |
| try (JarFile a = new JarFile(arg)) { |
| System.out.println("iE"); |
| } |
| } catch (Exception e) { |
| System.out.println("iF"); |
| } |
| try (JarFile a = new JarFile(arg)) { |
| System.out.println("iG"); |
| try (JarFile b = new JarFile(arg)) { |
| System.out.println("iH"); |
| } finally { |
| System.out.println("iI"); |
| throw new RuntimeException(); |
| } |
| } catch (Exception e) { |
| System.out.println("iJ"); |
| } |
| System.out.println("iK"); |
| } |
| |
| static void iBar(String arg) { |
| try (JarFile a = new JarFile(arg)) { |
| System.out.println("i1"); |
| throw new RuntimeException(); |
| } catch (Exception e) { |
| System.out.println("i2"); |
| } |
| try (JarFile a = new JarFile(arg)) { |
| System.out.println("i3"); |
| throw new RuntimeException(); |
| } catch (Exception e) { |
| System.out.println("i4"); |
| } |
| try (JarFile a = new JarFile(arg)) { |
| System.out.println("i5"); |
| throw new RuntimeException(); |
| } catch (Exception e) { |
| System.out.println("i6"); |
| } |
| try (JarFile a = new JarFile(arg)) { |
| System.out.println("i7"); |
| throw new RuntimeException(); |
| } catch (Exception e) { |
| System.out.println("i8"); |
| } |
| System.out.println("i99"); |
| } |
| } |