don't insert braces around single lambda parameter

This commit is contained in:
Anna.Kozlova
2016-12-06 12:30:59 +01:00
parent d980c8a786
commit 81e49151ff
11 changed files with 23 additions and 16 deletions

View File

@@ -31,6 +31,7 @@ import com.intellij.psi.util.PsiUtil;
import com.intellij.psi.util.RedundantCastUtil;
import com.intellij.refactoring.introduceField.ElementToWorkOn;
import com.intellij.refactoring.introduceVariable.IntroduceVariableHandler;
import com.intellij.util.Function;
import com.intellij.util.text.UniqueNameGenerator;
import com.siyeh.ig.psiutils.SideEffectChecker;
import org.jetbrains.annotations.NotNull;
@@ -77,19 +78,20 @@ public class LambdaRefactoringUtil {
final PsiParameter[] psiParameters = resolve instanceof PsiMethod ? ((PsiMethod)resolve).getParameterList().getParameters() : null;
final StringBuilder buf = new StringBuilder("(");
buf.append(GenericsUtil.getVariableTypeByExpressionType(functionalInterfaceType).getCanonicalText()).append(")(");
buf.append(GenericsUtil.getVariableTypeByExpressionType(functionalInterfaceType).getCanonicalText()).append(")");
final PsiParameterList parameterList = interfaceMethod.getParameterList();
final PsiParameter[] parameters = parameterList.getParameters();
final Map<PsiParameter, String> map = new HashMap<>();
final UniqueNameGenerator nameGenerator = new UniqueNameGenerator();
final JavaCodeStyleManager codeStyleManager = JavaCodeStyleManager.getInstance(referenceExpression.getProject());
final String paramsString = StringUtil.join(parameters, parameter -> {
Function<PsiParameter, String> paramPresentationFunction = parameter -> {
final int parameterIndex = parameterList.getParameterIndex(parameter);
String baseName;
if (isReceiver && parameterIndex == 0) {
final SuggestedNameInfo
nameInfo = codeStyleManager.suggestVariableName(VariableKind.PARAMETER, null, null, psiSubstitutor.substitute(parameter.getType()));
nameInfo =
codeStyleManager.suggestVariableName(VariableKind.PARAMETER, null, null, psiSubstitutor.substitute(parameter.getType()));
baseName = nameInfo.names.length > 0 ? nameInfo.names[0] : parameter.getName();
}
else {
@@ -112,9 +114,14 @@ public class LambdaRefactoringUtil {
return parameterName;
}
return "";
}, ", ");
buf.append(paramsString);
buf.append(") -> ");
};
if (parameters.length == 1) {
buf.append(paramPresentationFunction.fun(parameters[0]));
}
else {
buf.append("(").append(StringUtil.join(parameters, paramPresentationFunction, ", ")).append(")");
}
buf.append(" -> ");
final JavaResolveResult resolveResult = referenceExpression.advancedResolve(false);

View File

@@ -4,6 +4,6 @@ import java.util.stream.IntStream;
public class Main {
public static void test(List<CharSequence> list) {
list.stream().map(cs -> (String)cs).mapToInt(String::length).asLongStream().map(x -> x*2).forEach((l) -> System.out.println((Long) l));
list.stream().map(cs -> (String)cs).mapToInt(String::length).asLongStream().map(x -> x*2).forEach(l -> System.out.println((Long) l));
}
}

View File

@@ -3,6 +3,6 @@ import java.util.List;
public class Main {
public static void test(List<CharSequence> list) {
list.stream().map(cs -> cs.subSequence(1, 5)).forEach((charSequence) -> System.out.println(charSequence.length()));
list.stream().map(cs -> cs.subSequence(1, 5)).forEach(charSequence -> System.out.println(charSequence.length()));
}
}

View File

@@ -3,6 +3,6 @@ import java.util.List;
public class Main {
public static void test(List<CharSequence> list) {
list.stream().map((cs) -> cs.subSequence(1, 5).length()).forEach(System.out::println);
list.stream().map(cs -> cs.subSequence(1, 5).length()).forEach(System.out::println);
}
}

View File

@@ -4,6 +4,6 @@ import java.util.stream.IntStream;
public class Main {
public static void test(List<CharSequence> list) {
list.stream().mapToInt((cs) -> ((String) cs).length()).asLongStream().map(x -> x*2).boxed().forEach(System.out::println);
list.stream().mapToInt(cs -> ((String) cs).length()).asLongStream().map(x -> x*2).boxed().forEach(System.out::println);
}
}

View File

@@ -5,6 +5,6 @@ import java.util.Objects;
public class Main {
void test(List<String> list) {
list.stream().filter((o) -> Objects.nonNull(o) && o.isEmpty()).forEach(System.out::println);
list.stream().filter(o -> Objects.nonNull(o) && o.isEmpty()).forEach(System.out::println);
}
}

View File

@@ -7,7 +7,7 @@ interface P {
class A {
public static void print() {
List<Integer> someNumbers = A.returnAllNumbers((a) -> alwaysTrue());
List<Integer> someNumbers = A.returnAllNumbers(a -> alwaysTrue());
}
private static List<Integer> returnAllNumbers(P predicate) {

View File

@@ -4,7 +4,7 @@ interface I {
class A {
{
I predicate = (a) -> alwaysTrue(a, "");
I predicate = a -> alwaysTrue(a, "");
}
private static boolean alwaysTrue(int a, String anObject) {

View File

@@ -4,7 +4,7 @@ interface I {
class A {
{
I predicate = (a) -> alwaysTrue();
I predicate = a -> alwaysTrue();
}
private static boolean alwaysTrue() {

View File

@@ -7,7 +7,7 @@ class A {
ArrayList<String> strings = new ArrayList<String>();
Stream<String> it = strings.stream();
int i = (int) it.flatMap((t) -> Collections.singletonList(t).stream()).count();
int i = (int) it.flatMap(t -> Collections.singletonList(t).stream()).count();
}
}

View File

@@ -9,7 +9,7 @@ class A {
ArrayList<String> strings = new ArrayList<String>();
Stream<String> it = strings.stream();
int i = (int) it.flatMap((f) -> getFunction().apply(f).stream()).count();
int i = (int) it.flatMap(f -> getFunction().apply(f).stream()).count();
}
Function<String, List<String>> getFunction() {