# HG changeset patch # User mcimadamore # Date 1453810315 0 # Node ID ec74f22cf4c6f4bd52e201fe07831379a3760829 # Parent 4a652e4ca9523422149958673033e0ac740d5e1e 8148128: Regression: array constructor references marked as inexact Summary: Missing check in constructor reference stuckness check Reviewed-by: vromero diff -r 4a652e4ca952 -r ec74f22cf4c6 langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ArgumentAttr.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ArgumentAttr.java Wed Jul 05 21:15:54 2017 +0200 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ArgumentAttr.java Tue Jan 26 12:11:55 2016 +0000 @@ -68,6 +68,7 @@ import java.util.function.Function; import java.util.function.Supplier; +import static com.sun.tools.javac.code.TypeTag.ARRAY; import static com.sun.tools.javac.code.TypeTag.DEFERRED; import static com.sun.tools.javac.code.TypeTag.FORALL; import static com.sun.tools.javac.code.TypeTag.METHOD; @@ -275,7 +276,7 @@ res.type != null && res.type.hasTag(FORALL) || (res.flags() & Flags.VARARGS) != 0 || (TreeInfo.isStaticSelector(exprTree, tree.name.table.names) && - exprTree.type.isRaw())) { + exprTree.type.isRaw() && !exprTree.type.hasTag(ARRAY))) { tree.overloadKind = JCMemberReference.OverloadKind.OVERLOADED; } else { tree.overloadKind = JCMemberReference.OverloadKind.UNOVERLOADED; diff -r 4a652e4ca952 -r ec74f22cf4c6 langtools/test/tools/javac/lambda/8148128/T8148128.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/lambda/8148128/T8148128.java Tue Jan 26 12:11:55 2016 +0000 @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8148128 + * @summary Regression: array constructor references marked as inexact + * @compile T8148128.java + */ +import java.util.*; +import java.util.stream.*; + +class T8148128 { + public static void doSomething (List[] stuff) { + System.out.println("List Stuff"); + } + + public static void doSomething (Set[] stuff) { + System.out.println("Set Stuff"); + } + + public static void main (String[] args) { + doSomething(Stream.of("Foo", "Bar").map(Collections::singletonList).toArray(List[]::new)); + } +}