summaryrefslogtreecommitdiff
path: root/java/java-impl/src/com/intellij/codeInsight/completion/LambdaCompletionProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/java-impl/src/com/intellij/codeInsight/completion/LambdaCompletionProvider.java')
-rw-r--r--java/java-impl/src/com/intellij/codeInsight/completion/LambdaCompletionProvider.java22
1 files changed, 17 insertions, 5 deletions
diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/LambdaCompletionProvider.java b/java/java-impl/src/com/intellij/codeInsight/completion/LambdaCompletionProvider.java
index f169ccd8aa56..4fd7df6c7e2e 100644
--- a/java/java-impl/src/com/intellij/codeInsight/completion/LambdaCompletionProvider.java
+++ b/java/java-impl/src/com/intellij/codeInsight/completion/LambdaCompletionProvider.java
@@ -25,6 +25,7 @@ import com.intellij.openapi.editor.EditorModificationUtil;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
+import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.impl.source.resolve.graphInference.FunctionalInterfaceParameterizationUtil;
import com.intellij.psi.util.PsiUtil;
@@ -52,18 +53,25 @@ public class LambdaCompletionProvider extends CompletionProvider<CompletionParam
final Project project = method.getProject();
final PsiElement originalPosition = parameters.getOriginalPosition();
final JVMElementFactory jvmElementFactory = originalPosition != null ? JVMElementFactories.getFactory(originalPosition.getLanguage(), project) : null;
+ final JavaCodeStyleManager javaCodeStyleManager = JavaCodeStyleManager.getInstance(project);
if (jvmElementFactory != null) {
final PsiSubstitutor substitutor = LambdaUtil.getSubstitutor(method, PsiUtil.resolveGenericsClassInType(functionalInterfaceType));
- final JavaCodeStyleManager codeStyleManager = JavaCodeStyleManager.getInstance(project);
- params = GenerateMembersUtil.overriddenParameters(params, jvmElementFactory, codeStyleManager, substitutor, originalPosition);
+ params = GenerateMembersUtil.overriddenParameters(params, jvmElementFactory, javaCodeStyleManager, substitutor, originalPosition);
}
- final String paramsString = params.length == 1 ? params[0].getName() : "(" + StringUtil.join(params, new Function<PsiParameter, String>() {
+ String paramsString =
+ params.length == 1 ? getParamName(params[0], javaCodeStyleManager, originalPosition) : "(" + StringUtil.join(params, new Function<PsiParameter, String>() {
@Override
public String fun(PsiParameter parameter) {
- return parameter.getName();
+ return getParamName(parameter, javaCodeStyleManager, originalPosition);
}
- }, ",") + ")";
+ }, ",") + ")";
+
+ final CodeStyleManager codeStyleManager = CodeStyleManager.getInstance(project);
+ PsiLambdaExpression lambdaExpression = (PsiLambdaExpression)JavaPsiFacade.getElementFactory(project)
+ .createExpressionFromText(paramsString + " -> {}", null);
+ lambdaExpression = (PsiLambdaExpression)codeStyleManager.reformat(lambdaExpression);
+ paramsString = lambdaExpression.getParameterList().getText();
final LookupElementBuilder builder =
LookupElementBuilder.create(paramsString).withPresentableText(paramsString + " -> {}").withInsertHandler(new InsertHandler<LookupElement>() {
@Override
@@ -77,4 +85,8 @@ public class LambdaCompletionProvider extends CompletionProvider<CompletionParam
}
}
}
+
+ private static String getParamName(PsiParameter param, JavaCodeStyleManager javaCodeStyleManager, PsiElement originalPosition) {
+ return javaCodeStyleManager.suggestUniqueVariableName(param.getName(), originalPosition, true);
+ }
}