java completion: suggest AbstractClass::new[] (IDEA-188431)

This commit is contained in:
peter
2018-04-24 16:56:12 +02:00
parent 6b0d724e26
commit d970993b43
4 changed files with 22 additions and 1 deletions
@@ -154,9 +154,11 @@ public class FunctionalExpressionCompletionProvider extends CompletionProvider<C
Consumer<PsiType> consumer = eachReturnType -> {
PsiClass psiClass = PsiUtil.resolveClassInType(eachReturnType);
if (psiClass == null || !MethodReferenceResolver.canBeConstructed(psiClass)) return;
if (psiClass == null) return;
if (eachReturnType.getArrayDimensions() == 0) {
if (!MethodReferenceResolver.canBeConstructed(psiClass)) return;
PsiMethod[] constructors = psiClass.getConstructors();
for (PsiMethod psiMethod : constructors) {
if (isSignatureAppropriate(psiMethod, params, substitutor, 0, originalPosition)) {
@@ -0,0 +1,9 @@
import java.util.stream.Stream;
public class Outer {
Abstract[] foo(Stream<Abstract> s) {
return s.toArray(Abstract[]::new)<caret>;
}
}
abstract class Abstract {}
@@ -0,0 +1,9 @@
import java.util.stream.Stream;
public class Outer {
Abstract[] foo(Stream<Abstract> s) {
return s.toArray(Ab<caret>);
}
}
abstract class Abstract {}
@@ -88,6 +88,7 @@ public class SmartType18CompletionTest extends LightFixtureCompletionTestCase {
}
public void testInnerArrayConstructorRef() { doTest(true); }
public void testAbstractArrayConstructorRef() { doTest(true); }
public void testNoConstraintsWildcard() {
doTest();