blob: da693b3686b052dd648f15a3ba304c3ddad7510f [file] [log] [blame]
/*
* @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() { }
}