diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java index 21963ae8752..1967b9f56c3 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java @@ -3685,7 +3685,9 @@ class ConstructorReferenceLookupHelper extends ReferenceLookupHelper { List typeargtypes, MethodResolutionPhase maxPhase) { super(referenceTree, names.init, site, argtypes, typeargtypes, maxPhase); if (site.isRaw()) { - this.site = new ClassType(site.getEnclosingType(), site.tsym.type.getTypeArguments(), site.tsym, site.getMetadata()); + this.site = new ClassType(site.getEnclosingType(), + !(site.tsym.isInner() && site.getEnclosingType().isRaw()) ? + site.tsym.type.getTypeArguments() : List.nil(), site.tsym, site.getMetadata()); needsInference = true; } } diff --git a/test/langtools/tools/javac/lambda/methodReference/MethodRefNewInnerRawTest.java b/test/langtools/tools/javac/lambda/methodReference/MethodRefNewInnerRawTest.java new file mode 100644 index 00000000000..2e4d7c5c953 --- /dev/null +++ b/test/langtools/tools/javac/lambda/methodReference/MethodRefNewInnerRawTest.java @@ -0,0 +1,24 @@ +/* + * @test /nodynamiccopyright/ + * @bug 8029633 + * @summary Raw inner class constructor ref should not perform diamond inference + * @compile/fail/ref=MethodRefNewInnerRawTest.out -Werror -Xlint:unchecked -XDrawDiagnostics MethodRefNewInnerRawTest.java + */ + +import java.util.function.*; + +class MethodRefNewInnerRawTest { + class Inner1 {} + class Inner2 {} + + Supplier s1 = MethodRefNewInnerRawTest.Inner1::new; + Supplier s2 = MethodRefNewInnerRawTest.Inner2::new; + Supplier.Inner1> s3 = MethodRefNewInnerRawTest.Inner1::new; + Supplier.Inner2> s4 = MethodRefNewInnerRawTest.Inner2::new; + + static class Outer { + class Inner3 {} + + Supplier> s5 = Outer.Inner3::new; + } +} diff --git a/test/langtools/tools/javac/lambda/methodReference/MethodRefNewInnerRawTest.out b/test/langtools/tools/javac/lambda/methodReference/MethodRefNewInnerRawTest.out new file mode 100644 index 00000000000..43849afbcd5 --- /dev/null +++ b/test/langtools/tools/javac/lambda/methodReference/MethodRefNewInnerRawTest.out @@ -0,0 +1,5 @@ +MethodRefNewInnerRawTest.java:16:55: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), MethodRefNewInnerRawTest.Inner1, MethodRefNewInnerRawTest.Inner1 +MethodRefNewInnerRawTest.java:17:63: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), MethodRefNewInnerRawTest.Inner2, MethodRefNewInnerRawTest.Inner2 +- compiler.err.warnings.and.werror +1 error +2 warnings