T8016177g.java revision 2819:b93a15ac3bde
152419Sjulian/*
252419Sjulian * @test /nodynamiccopyright/
352419Sjulian * @bug 8016081 8016178 8069545
452419Sjulian * @summary structural most specific and stuckness
559882Sarchie * @compile/fail/ref=T8016177g.out -XDrawDiagnostics T8016177g.java
652419Sjulian */
752419Sjulian
852419Sjulian
952419Sjulianclass Test {
1052419Sjulian
1152419Sjulian    interface Function<X, Y> {
1252419Sjulian        Y m(X x);
1352419Sjulian    }
1452419Sjulian
1552419Sjulian    interface Box<T> {
1652419Sjulian        T get();
1752419Sjulian        <R> R map(Function<T,R> f);
1852419Sjulian    }
1952419Sjulian
2052419Sjulian    static class Person {
2152419Sjulian        Person(String name) { }
2252419Sjulian    }
2352419Sjulian
2452419Sjulian    void print(Object arg) { }
2552419Sjulian    void print(String arg) { }
2652419Sjulian
2752419Sjulian    int abs(int a) { return 0; }
2852419Sjulian    long abs(long a) { return 0; }
2952419Sjulian    float abs(float a) { return 0; }
3052419Sjulian    double abs(double a) { return 0; }
3152419Sjulian
3252419Sjulian    void test() {
3352419Sjulian        Box<String> b = null;
3452419Sjulian        print(b.map(s -> new Person(s)));
3552419Sjulian        int i = abs(b.map(s -> Double.valueOf(s)));
3652419Sjulian    }
3752419Sjulian}
3852419Sjulian