test/tools/javac/lambda/T8056014.java

Sat, 07 Nov 2020 10:30:02 +0800

author
aoqi
date
Sat, 07 Nov 2020 10:30:02 +0800
changeset 3938
93012e2a5d1d
parent 2563
c627efb5fdcd
permissions
-rw-r--r--

Added tag mips-jdk8u275-b01 for changeset eb6ee6a5f2fe

jlahoda@2563 1 /*
jlahoda@2563 2 * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
jlahoda@2563 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
jlahoda@2563 4 *
jlahoda@2563 5 * This code is free software; you can redistribute it and/or modify it
jlahoda@2563 6 * under the terms of the GNU General Public License version 2 only, as
jlahoda@2563 7 * published by the Free Software Foundation.
jlahoda@2563 8 *
jlahoda@2563 9 * This code is distributed in the hope that it will be useful, but WITHOUT
jlahoda@2563 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
jlahoda@2563 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
jlahoda@2563 12 * version 2 for more details (a copy is included in the LICENSE file that
jlahoda@2563 13 * accompanied this code).
jlahoda@2563 14 *
jlahoda@2563 15 * You should have received a copy of the GNU General Public License version
jlahoda@2563 16 * 2 along with this work; if not, write to the Free Software Foundation,
jlahoda@2563 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
jlahoda@2563 18 *
jlahoda@2563 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
jlahoda@2563 20 * or visit www.oracle.com if you need additional information or have any
jlahoda@2563 21 * questions.
jlahoda@2563 22 */
jlahoda@2563 23
jlahoda@2563 24 /**
jlahoda@2563 25 * @test
jlahoda@2563 26 * @bug 8056014
jlahoda@2563 27 * @summary Verify that full type inference is used when calling a method on a type variable.
jlahoda@2563 28 * @compile T8056014.java
jlahoda@2563 29 * @run main T8056014
jlahoda@2563 30 */
jlahoda@2563 31
jlahoda@2563 32 import java.util.*;
jlahoda@2563 33
jlahoda@2563 34 public class T8056014 {
jlahoda@2563 35 public static void main(String[] args) {
jlahoda@2563 36 new T8056014().run();
jlahoda@2563 37 }
jlahoda@2563 38
jlahoda@2563 39 void run() {
jlahoda@2563 40 List<S> l = Arrays.asList(new S());
jlahoda@2563 41 C<S> c = new C<>(new S());
jlahoda@2563 42 foo(l.get(0).copy(1));
jlahoda@2563 43 foo(c.get(0).copy(1));
jlahoda@2563 44 }
jlahoda@2563 45
jlahoda@2563 46 void foo(S d) {
jlahoda@2563 47 }
jlahoda@2563 48 }
jlahoda@2563 49
jlahoda@2563 50 class B {
jlahoda@2563 51 public B copy(long j) {
jlahoda@2563 52 throw new AssertionError("Should not get here.");
jlahoda@2563 53 }
jlahoda@2563 54 }
jlahoda@2563 55
jlahoda@2563 56 class S extends B {
jlahoda@2563 57 public <T> T copy(int i) {
jlahoda@2563 58 return null;
jlahoda@2563 59 }
jlahoda@2563 60 }
jlahoda@2563 61
jlahoda@2563 62 class C<T extends B> {
jlahoda@2563 63 final T t;
jlahoda@2563 64 public C(T t) {
jlahoda@2563 65 this.t = t;
jlahoda@2563 66 }
jlahoda@2563 67 public T get(int i) {
jlahoda@2563 68 return t;
jlahoda@2563 69 }
jlahoda@2563 70 }

mercurial