EA-107704 - assert: InferenceSession.<init>

This commit is contained in:
Anna.Kozlova
2017-09-26 12:18:48 +02:00
parent 486f5716a1
commit 643e046c85
3 changed files with 19 additions and 4 deletions

View File

@@ -253,10 +253,12 @@ public class PsiMethodReferenceCompatibilityConstraint implements ConstraintForm
return PsiSubstitutor.EMPTY;
}
psiSubstitutor = helper.inferTypeArguments(PsiTypesUtil.filterUnusedTypeParameters(qContainingClass.getTypeParameters(), paramTypes),
paramTypes,
signature.getParameterTypes(),
PsiUtil.getLanguageLevel(methodReferenceExpression));
if (paramTypes.length == signature.getParameterTypes().length) {
psiSubstitutor = helper.inferTypeArguments(PsiTypesUtil.filterUnusedTypeParameters(qContainingClass.getTypeParameters(), paramTypes),
paramTypes,
signature.getParameterTypes(),
PsiUtil.getLanguageLevel(methodReferenceExpression));
}
}
else {
psiSubstitutor = PsiSubstitutor.EMPTY;

View File

@@ -0,0 +1,12 @@
import java.util.function.Function;
class Foo<H> {
private <S> Foo(Foo<S> s, Foo... ss) {}
{
foo(Foo::new);
}
private <T> void foo(final Function<Foo, T> param) { }
}

View File

@@ -176,6 +176,7 @@ public class NewMethodRefHighlightingTest extends LightDaemonAnalyzerTestCase {
public void testDistinguishCapturedWildcardsByDifferentParameters() { doTest(); }
public void testConstructorRefOnClassWithRecursiveTypeParameter() { doTest(); }
public void testWildcardInCheckedCompatibilityConstraints() { doTest(); }
public void testConstructorReferenceWithVarargsParameters() { doTest(); }
public void testPreferErrorOnTopLevelToFailedSubstitutorOnNestedLevel() { doTest(); }