langtools/test/tools/javac/lambda/MethodReference37.java
author sadayapalam
Fri, 29 May 2015 09:15:42 +0530
changeset 30998 9e8f3b991f97
parent 14547 86d8d242b0c4
permissions -rw-r--r--
8081271: NPE while compiling a program with erroneous use of constructor reference expressions Summary: Missing enclosing instance error should not be swallowed when attributing constructor reference expressions. Reviewed-by: mcimadamore, vromero

/*
 * @test /nodynamiccopyright/
 * @bug 8003280 8081271
 * @summary Add lambda tests
 *  spurious exceptions when checking references to inner constructors where
 *          the enclosing class is not defined in any outer context
 * @compile/fail/ref=MethodReference37.out -XDrawDiagnostics MethodReference37.java
 */

class MethodReference37 {

    interface SAM1<R> {
        R invoke();
    }

    interface SAM2<R, A> {
        R invoke(A a);
    }

    static class Outer {
        class Inner { }

        void test1() {
            SAM2<Inner, Outer> sam = Inner::new;
        }

        void test2() {
            SAM1<Inner> sam0 = Inner::new;
            SAM2<Inner, Outer> sam1 = Inner::new;
        }
    }

    static void test1() {
        SAM2<Outer.Inner, Outer> sam = Outer.Inner::new;
    }

    void test2() {
        SAM2<Outer.Inner, Outer> sam1 = Outer.Inner::new;
    }
}