diff options
author | Tor Norbye <tnorbye@google.com> | 2014-08-21 00:31:02 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-08-16 04:55:08 +0000 |
commit | 9cde0e3c015174898df8b8f3672185941fad4786 (patch) | |
tree | 80a55c7b59c38377216daaada4e8bc47b69ceb9a /java/java-impl/src/com/intellij/codeInsight/completion/LambdaCompletionProvider.java | |
parent | 3b37877a2561bf9fbe072253a18688807d523505 (diff) | |
parent | d76e3920c56d37c942092b7dca20fcaded81c0a5 (diff) | |
download | idea-9cde0e3c015174898df8b8f3672185941fad4786.tar.gz |
Merge "Merge remote-tracking branch 'aosp/upstream-master' into merge"
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.java | 22 |
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); + } } |