mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
extract functional: convert lambda to method reference when possible (IDEA-149173)
This commit is contained in:
+3
-3
@@ -292,9 +292,9 @@ public class LambdaCanBeMethodReferenceInspection extends BaseJavaBatchLocalInsp
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected static String createMethodReferenceText(final PsiElement element,
|
||||
final PsiType functionalInterfaceType,
|
||||
final PsiParameter[] parameters) {
|
||||
public static String createMethodReferenceText(final PsiElement element,
|
||||
final PsiType functionalInterfaceType,
|
||||
final PsiParameter[] parameters) {
|
||||
if (element instanceof PsiMethodCallExpression) {
|
||||
final PsiMethodCallExpression methodCall = (PsiMethodCallExpression)element;
|
||||
|
||||
|
||||
+13
-2
@@ -25,6 +25,7 @@
|
||||
package com.intellij.refactoring.introduceParameter;
|
||||
|
||||
import com.intellij.codeInspection.AnonymousCanBeLambdaInspection;
|
||||
import com.intellij.codeInspection.LambdaCanBeMethodReferenceInspection;
|
||||
import com.intellij.ide.util.PropertiesComponent;
|
||||
import com.intellij.openapi.help.HelpManager;
|
||||
import com.intellij.openapi.options.ConfigurationException;
|
||||
@@ -275,15 +276,25 @@ public class IntroduceParameterDialog extends RefactoringDialog {
|
||||
isDeleteLocalVariable = myPanel.isDeleteLocalVariable();
|
||||
}
|
||||
|
||||
final PsiType selectedType = getSelectedType();
|
||||
final IntroduceParameterProcessor processor = new IntroduceParameterProcessor(
|
||||
myProject, myMethodToReplaceIn, myMethodToSearchFor,
|
||||
parameterInitializer, myExpression,
|
||||
myLocalVar, isDeleteLocalVariable,
|
||||
getParameterName(), myPanel.isReplaceAllOccurences(),
|
||||
myPanel.getReplaceFieldsWithGetters(), isDeclareFinal(), myPanel.isGenerateDelegate(), getSelectedType(), myPanel.getParametersToRemove());
|
||||
myPanel.getReplaceFieldsWithGetters(), isDeclareFinal(), myPanel.isGenerateDelegate(), selectedType, myPanel.getParametersToRemove());
|
||||
if (myCbCollapseToLambda.isVisible() && myCbCollapseToLambda.isSelected() && parameterInitializer != null) {
|
||||
PsiExpression lambda = AnonymousCanBeLambdaInspection.replaceAnonymousWithLambda(parameterInitializer, getSelectedType());
|
||||
PsiExpression lambda = AnonymousCanBeLambdaInspection.replaceAnonymousWithLambda(parameterInitializer, selectedType);
|
||||
if (lambda != null) {
|
||||
final PsiParameter[] lambdaParameters = ((PsiLambdaExpression)lambda).getParameterList().getParameters();
|
||||
final PsiCallExpression toConvertCall = LambdaCanBeMethodReferenceInspection.canBeMethodReferenceProblem(((PsiLambdaExpression)lambda).getBody(), lambdaParameters, selectedType);
|
||||
if (toConvertCall != null) {
|
||||
final String methodReferenceText = LambdaCanBeMethodReferenceInspection.createMethodReferenceText(toConvertCall, selectedType, lambdaParameters);
|
||||
if (methodReferenceText != null) {
|
||||
lambda = JavaPsiFacade.getElementFactory(getProject()).createExpressionFromText(methodReferenceText, lambda);
|
||||
}
|
||||
}
|
||||
|
||||
processor.setParameterInitializer(lambda);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -791,4 +791,4 @@ enter.new.project.name=Enter new project name:
|
||||
rename.project=Rename Project
|
||||
renames.project=Renames project
|
||||
introduce.functional.parameter.title=Extract Functional Parameter
|
||||
introduce.parameter.convert.lambda=&Convert to lambda
|
||||
introduce.parameter.convert.lambda=&Convert to functional expression
|
||||
|
||||
Reference in New Issue
Block a user