summaryrefslogtreecommitdiff
path: root/java/java-impl/src/com/intellij/codeInsight/completion/MethodReferenceCompletionProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/java-impl/src/com/intellij/codeInsight/completion/MethodReferenceCompletionProvider.java')
-rw-r--r--java/java-impl/src/com/intellij/codeInsight/completion/MethodReferenceCompletionProvider.java15
1 files changed, 7 insertions, 8 deletions
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<Comple
final PsiElement resolve = referenceExpression.resolve();
if (resolve != null && PsiEquivalenceUtil.areElementsEquivalent(element, resolve) &&
PsiMethodReferenceUtil.checkMethodReferenceContext(referenceExpression, resolve, functionalType) == null) {
- result.addElement(new JavaMethodReferenceElement((PsiMethod)element, refPlace, referenceExpression));
+ result.addElement(new JavaMethodReferenceElement((PsiMethod)element, refPlace));
}
}
finally {
@@ -80,19 +80,20 @@ public class MethodReferenceCompletionProvider extends CompletionProvider<Comple
}
private PsiMethodReferenceExpression createMethodReferenceExpression(PsiMethod method) {
+ PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(method.getProject());
if (refPlace instanceof PsiMethodReferenceExpression) {
final PsiMethodReferenceExpression referenceExpression = (PsiMethodReferenceExpression)refPlace.copy();
final PsiElement referenceNameElement = referenceExpression.getReferenceNameElement();
LOG.assertTrue(referenceNameElement != null, referenceExpression);
- referenceNameElement.replace(JavaPsiFacade.getElementFactory(method.getProject()).createIdentifier(method.getName()));
+ referenceNameElement.replace(method.isConstructor() ? elementFactory.createKeyword("new") : elementFactory.createIdentifier(method.getName()));
return referenceExpression;
}
else if (method.hasModifierProperty(PsiModifier.STATIC)) {
final PsiClass aClass = method.getContainingClass();
LOG.assertTrue(aClass != null);
final String qualifiedName = aClass.getQualifiedName();
- return (PsiMethodReferenceExpression)JavaPsiFacade.getElementFactory(method.getProject()).createExpressionFromText(
- qualifiedName + "::" + method.getName(), refPlace);
+ return (PsiMethodReferenceExpression)elementFactory.createExpressionFromText(
+ qualifiedName + "::" + (method.isConstructor() ? "new" : method.getName()), refPlace);
}
else {
return null;
@@ -113,13 +114,11 @@ public class MethodReferenceCompletionProvider extends CompletionProvider<Comple
private static class JavaMethodReferenceElement extends JavaMethodCallElement {
private final PsiMethod myMethod;
private final PsiElement myRefPlace;
- private PsiMethodReferenceExpression myReferenceExpression;
- public JavaMethodReferenceElement(PsiMethod method, PsiElement refPlace, PsiMethodReferenceExpression referenceExpression) {
- super(method);
+ public JavaMethodReferenceElement(PsiMethod method, PsiElement refPlace) {
+ super(method, method.isConstructor() ? "new" : method.getName());
myMethod = method;
myRefPlace = refPlace;
- myReferenceExpression = referenceExpression;
}
@Override