langtools/test/tools/javac/generics/inference/8152832/T8152832.java
author mcimadamore
Fri, 08 Apr 2016 10:52:26 +0100
changeset 37003 12ece14d32e0
permissions -rw-r--r--
8152832: Type inference regression in javac Summary: Stale incoropration actions caused missing inference bounds Reviewed-by: vromero
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
37003
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
     1
/*
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
     2
 * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
     4
 *
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    10
 *
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    15
 * accompanied this code).
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    16
 *
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    20
 *
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    23
 * questions.
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    24
 */
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    25
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    26
/**
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    27
 * @test
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    28
 * @bug 8152832
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    29
 * @summary Type inference regression in javac
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    30
 * @compile T8152832.java
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    31
 */
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    32
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    33
import java.util.function.*;
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    34
import java.util.stream.*;
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    35
import java.util.*;
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    36
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    37
class T8152832 {
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    38
    interface MyStream<T> extends Stream<T> {
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    39
        public <U> List<U> toFlatList(Function<? super T, ? extends Collection<U>> mapper);
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    40
    }
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    41
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    42
    static class MyStreamSupplier<T> {
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    43
        public MyStream<T> get() {
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    44
            return null;
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    45
        }
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    46
    }
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    47
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    48
    public static <T> void myStream(Supplier<Stream<T>> base, Consumer<MyStreamSupplier<T>> consumer) {
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    49
    }
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    50
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    51
    public static void assertEquals(Object expected, Object actual) {
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    52
    }
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    53
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    54
    public void test() {
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    55
        List<List<String>> strings = Arrays.asList();
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    56
        List<String> expectedList = Arrays.asList();
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    57
        myStream(strings::stream, supplier -> {
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    58
            assertEquals(expectedList, supplier.get().toFlatList(Function.identity()));
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    59
        });
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    60
    }
12ece14d32e0 8152832: Type inference regression in javac
mcimadamore
parents:
diff changeset
    61
}