method reference: capture wildcards of new expressions (IDEA-152115)

This commit is contained in:
Anna Kozlova
2016-02-25 18:42:33 +01:00
parent e61918f015
commit 3434d9cc47
3 changed files with 13 additions and 3 deletions

View File

@@ -119,9 +119,6 @@ public class PsiMethodReferenceUtil {
}
methodReturnType = subst.substitute(methodReturnType);
if (methodReturnType != null) {
methodReturnType = PsiUtil.captureToplevelWildcards(methodReturnType, expression);
}
}
}
else if (resolve instanceof PsiClass) {
@@ -145,6 +142,8 @@ public class PsiMethodReferenceUtil {
methodReturnType = JavaPsiFacade.getElementFactory(expression.getProject()).createType(containingClass, subst);
}
methodReturnType = PsiUtil.captureToplevelWildcards(methodReturnType, expression);
if (TypeConversionUtil.isAssignable(interfaceReturnType, methodReturnType)) {
return true;
}

View File

@@ -0,0 +1,7 @@
import java.util.stream.Stream;
class Test {
private static Class<?>[] getArguments(Stream<Class<String>> classStream) {
return classStream.toArray(Class<?>[]::new);
}
}

View File

@@ -494,6 +494,10 @@ public class NewMethodRefHighlightingTest extends LightDaemonAnalyzerTestCase {
doTest();
}
public void testCaptureTypeOfNewArrayExpression() throws Exception {
doTest();
}
private void doTest() {
doTest(false);
}