|  | // 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"); | 
|  | } | 
|  | } |