diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/MethodReferenceResolver.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/MethodReferenceResolver.java index 785cb7e57d4d..8d40e2914d9c 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/MethodReferenceResolver.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/MethodReferenceResolver.java @@ -54,7 +54,9 @@ public class MethodReferenceResolver implements ResolveCache.PolyVariantContextR final PsiElement element = reference.getReferenceNameElement(); final boolean isConstructor = reference.isConstructor(); if (element instanceof PsiIdentifier || isConstructor) { - if (isConstructor && (containingClass.isEnum() || containingClass.hasModifierProperty(PsiModifier.ABSTRACT))) { + if (isConstructor && (containingClass.isEnum() || + containingClass.hasModifierProperty(PsiModifier.ABSTRACT) || + containingClass instanceof PsiTypeParameter)) { return JavaResolveResult.EMPTY_ARRAY; } final PsiType functionalInterfaceType = getInterfaceType(reference); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newMethodRef/TypeParameterInstantiation.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newMethodRef/TypeParameterInstantiation.java new file mode 100644 index 000000000000..8c2124022fa9 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newMethodRef/TypeParameterInstantiation.java @@ -0,0 +1,8 @@ + +import java.util.function.Supplier; + +class Test { + { + Supplier aNew = T::new; + } +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/NewMethodRefHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/NewMethodRefHighlightingTest.java index 5a2a9368959f..c140584b90ae 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/NewMethodRefHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/NewMethodRefHighlightingTest.java @@ -506,6 +506,10 @@ public class NewMethodRefHighlightingTest extends LightDaemonAnalyzerTestCase { doTest(); } + public void testTypeParameterInstantiation() throws Exception { + doTest(); + } + private void doTest() { doTest(false); }