SkipLazyConstantCreationForMethodRefTest.java revision 3014:a3dd196e5341
1/*
2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24/*
25 * @test
26 * @bug 8023112
27 * @summary Mixing up the method type argument with the class type for method
28 *          reference ClassType<Q>::<T>new
29 * @compile SkipLazyConstantCreationForMethodRefTest.java
30 */
31
32public class SkipLazyConstantCreationForMethodRefTest<T> {
33    SkipLazyConstantCreationForMethodRefTest(int a, boolean b) {}
34    SkipLazyConstantCreationForMethodRefTest() {}
35}
36
37class SubClass<T> extends SkipLazyConstantCreationForMethodRefTest {
38    SubClass(int a, boolean b) {}
39}
40
41interface SAM {
42    SubClass<SkipLazyConstantCreationForMethodRefTest> m(int a, boolean b);
43}
44
45interface Tester1 {
46    SAM s11 = SubClass<SkipLazyConstantCreationForMethodRefTest>::<Object>new;
47    SAM s12 = (SubClass<SkipLazyConstantCreationForMethodRefTest>::<Object>new);
48    SAM s13 = (SAM)SubClass<SkipLazyConstantCreationForMethodRefTest>::<Object>new;
49    SAM s14 = true ? s11 : s12;
50    SAM s15 = true ? s11 : (SAM)SubClass<SkipLazyConstantCreationForMethodRefTest>::<Object>new;
51    SAM s16 = true ? (SAM)SubClass<SkipLazyConstantCreationForMethodRefTest>::<Object>new : s12;
52}
53
54interface Tester2 {
55    SAM s21 = Tester1.s11;
56}
57