From 23256c9a59f26af1de6c15022ced330b8f4ada7e Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 11 Aug 2014 17:20:31 +0400 Subject: [PATCH] method reference: enable constructor refs completion (IDEA-124541) --- .../completion/JavaMethodCallElement.java | 6 +++++- .../MethodReferenceCompletionProvider.java | 15 +++++++-------- .../src/com/intellij/psi/filters/FilterUtil.java | 6 ++++++ .../completion/smartType/ConstructorRef-out.java | 14 ++++++++++++++ .../completion/smartType/ConstructorRef.java | 14 ++++++++++++++ .../completion/SmartType18CompletionTest.java | 4 ++++ 6 files changed, 50 insertions(+), 9 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/completion/smartType/ConstructorRef-out.java create mode 100644 java/java-tests/testData/codeInsight/completion/smartType/ConstructorRef.java diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodCallElement.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodCallElement.java index 29906bbde605..c0f82668f74a 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodCallElement.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodCallElement.java @@ -39,7 +39,11 @@ public class JavaMethodCallElement extends LookupItem implements Type private boolean myMayNeedExplicitTypeParameters; public JavaMethodCallElement(@NotNull PsiMethod method) { - super(method, method.getName()); + this(method, method.getName()); + } + + public JavaMethodCallElement(@NotNull PsiMethod method, String methodName) { + super(method, methodName); myMethod = method; myHelper = null; myContainingClass = method.getContainingClass(); diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/MethodReferenceCompletionProvider.java b/java/java-impl/src/com/intellij/codeInsight/completion/MethodReferenceCompletionProvider.java index e83f0ef38c3c..494ed110b254 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/MethodReferenceCompletionProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/MethodReferenceCompletionProvider.java @@ -68,7 +68,7 @@ public class MethodReferenceCompletionProvider extends CompletionProvider); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/smartType/ConstructorRef.java b/java/java-tests/testData/codeInsight/completion/smartType/ConstructorRef.java new file mode 100644 index 000000000000..7f7af003b377 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/smartType/ConstructorRef.java @@ -0,0 +1,14 @@ +@FunctionalInterface +interface Foo9 { + Bar test(int p); +} + +class Bar { + public Bar(int p) {} +} + +class Test88 { + void foo(Foo9 foo) { + foo(Bar::); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartType18CompletionTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartType18CompletionTest.java index 8aee494012cb..d98f0a68b72b 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartType18CompletionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartType18CompletionTest.java @@ -81,6 +81,10 @@ public class SmartType18CompletionTest extends LightFixtureCompletionTestCase { doTest(); } + public void testConstructorRef() throws Exception { + doTest(false); + } + public void testFilteredMethodReference() throws Exception { doTest(false); }