/* * @test /nodynamiccopyright/ * @bug 7196163 * @summary Twr with resource variables as lambda expressions and method references * @compile/fail/ref=TwrAndLambda.out -XDrawDiagnostics TwrAndLambda.java */ public class TwrAndLambda { public static void main(String... args) { // Lambda expression AutoCloseable v1 = () -> {}; // Static method reference AutoCloseable v2 = TwrAndLambda::close1; // Instance method reference AutoCloseable v3 = new TwrAndLambda()::close2; // Lambda expression which is not AutoCloseable Runnable r1 = () -> {}; // Static method reference which is not AutoCloseable Runnable r2 = TwrAndLambda::close1; // Instance method reference which is not AutoCloseable Runnable r3 = new TwrAndLambda()::close2; try (v1) { } catch(Exception e) {} try (v2) { } catch(Exception e) {} try (v3) { } catch(Exception e) {} try (r1) { } catch(Exception e) {} try (r2) { } catch(Exception e) {} try (r3) { } catch(Exception e) {} // lambda invocation I i = (x) -> { try(x) { } catch (Exception e) { } }; i.m(v1); i.m(v2); i.m(v3); i.m(r1); i.m(r2); i.m(r3); } static interface I { public void m(AutoCloseable r); } public static void close1() { } public void close2() { } }