1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
/*
* @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() { }
}
|