package p;
class TestInlineMethodReference1 {
private Object fun1() {
Object fi1 = (FI) this::m; // [1]
Object fi2;
fi2 = (FI) this::m; // [2]
Object[] a = new Object[] {(FI) this::m, (FI) this::m}; // [3]
Object[][] b = new Object[][] {{(FI) this::m, (FI) this::m}, {(FI) this::m}}; // [4]
Object[] c = {(FI) this::m, (FI) this::m}; // [5]
Object[][] d = {{(FI) this::m}, {(FI) this::m}}; // [6]
int x1 = fun2((FI) this::m); // [7]
TestInlineMethodReference1 c1 = new TestInlineMethodReference1((FI) this::m); // [8]
F f1 = (fi_p) -> ((FI) this::m); // [9]
F f2 = (fi_p) -> {
return (FI) this::m; // [10]
};
f1.bar((FI) this::m); // [11]
Object fi4 = true ? (FI) this::m : (FI) this::m; // [12]
return (FI) this::m; // [13]
}
private int fun2(Object fi) {return 0;}
public TestInlineMethodReference1(Object fi) { }
int m(int x) {
return x++;
}
}
@FunctionalInterface
interface FI {
int foo(int x);
}
@FunctionalInterface
interface F {
Object bar(Object fi);
}