langtools/test/tools/javac/lambda/MethodReference23.java
author sadayapalam
Fri, 29 May 2015 09:15:42 +0530
changeset 30998 9e8f3b991f97
parent 29774 9d438163db79
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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
14547
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
     1
/*
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
     2
 * @test /nodynamiccopyright/
30998
9e8f3b991f97 8081271: NPE while compiling a program with erroneous use of constructor reference expressions
sadayapalam
parents: 29774
diff changeset
     3
 * @bug 8003280 8075184 8081271
14547
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
     4
 * @summary Add lambda tests
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
     5
 *  check that pair of bound/non-bound constructor references is flagged as ambiguous
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
     6
 * @author  Maurizio Cimadamore
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
     7
 * @compile/fail/ref=MethodReference23.out -XDrawDiagnostics MethodReference23.java
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
     8
 */
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
     9
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    10
class MethodReference23 {
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    11
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    12
    class Inner1 {
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    13
        Inner1(MethodReference23 outer) {};
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    14
        Inner1() {};
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    15
    }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    16
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    17
    static class Inner2 {
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    18
        Inner2(MethodReference23 outer) {};
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    19
        Inner2() {};
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    20
    }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    21
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    22
    interface SAM11 {
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    23
        Inner1 m(MethodReference23 rec);
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    24
    }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    25
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    26
    interface SAM12 {
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    27
        Inner1 m();
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    28
    }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    29
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    30
    interface SAM21 {
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    31
        Inner2 m(MethodReference23 rec);
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    32
    }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    33
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    34
    interface SAM22 {
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    35
        Inner2 m();
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    36
    }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    37
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    38
    static void call11(SAM11 s) {   }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    39
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    40
    static void call12(SAM12 s) {   }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    41
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    42
    static void call21(SAM21 s) {   }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    43
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    44
    static void call22(SAM22 s) {   }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    45
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    46
    static void call3(SAM11 s) {   }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    47
    static void call3(SAM12 s) {   }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    48
    static void call3(SAM21 s) {   }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    49
    static void call3(SAM22 s) {   }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    50
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    51
    static void test11() {
30998
9e8f3b991f97 8081271: NPE while compiling a program with erroneous use of constructor reference expressions
sadayapalam
parents: 29774
diff changeset
    52
        SAM11 s = MethodReference23.Inner1::new; // fail.
9e8f3b991f97 8081271: NPE while compiling a program with erroneous use of constructor reference expressions
sadayapalam
parents: 29774
diff changeset
    53
        call11(MethodReference23.Inner1::new); // fail.
14547
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    54
    }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    55
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    56
    static void test12() {
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    57
        SAM12 s = MethodReference23.Inner1::new; //fail
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    58
        call12(MethodReference23.Inner1::new); //fail
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    59
    }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    60
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    61
    static void test21() {
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    62
        SAM21 s = MethodReference23.Inner2::new; //ok
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    63
        call21(MethodReference23.Inner2::new); //ok
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    64
    }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    65
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    66
    static void test22() {
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    67
        SAM22 s = MethodReference23.Inner2::new; //ok
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    68
        call22(MethodReference23.Inner2::new); //ok
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    69
    }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    70
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    71
    static void test3() {
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    72
        call3(MethodReference23.Inner2::new); //ambiguous
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    73
    }
86d8d242b0c4 8003280: Add lambda tests
mcimadamore
parents:
diff changeset
    74
}