IDEA-167088 Stream API migration: support simple joining cases: fixed AT_WANTED_PLACE case

This commit is contained in:
Tagir Valeev
2017-01-25 13:05:08 +07:00
parent 16ddd276ed
commit bfa2fb9348
4 changed files with 57 additions and 2 deletions
@@ -561,8 +561,14 @@ class CollectMigration extends BaseStreamApiMigration {
@Override
void cleanUp() {
PsiLocalVariable target = getTargetVariable();
target.getTypeElement()
.replace(JavaPsiFacade.getElementFactory(target.getProject()).createTypeElementFromText(CommonClassNames.JAVA_LANG_STRING, target));
PsiElementFactory factory = JavaPsiFacade.getElementFactory(target.getProject());
target.getTypeElement().replace(factory.createTypeElementFromText(CommonClassNames.JAVA_LANG_STRING, target));
if (getStatus() == InitializerUsageStatus.AT_WANTED_PLACE) {
PsiExpression initializer = target.getInitializer();
if (initializer != null) {
initializer.replace(factory.createExpressionFromText("\"\"", target));
}
}
Collection<PsiReference> usages = ReferencesSearch.search(target).findAll();
for (PsiReference usage : usages) {
PsiElement element = usage.getElement();
@@ -0,0 +1,15 @@
// "Replace with collect" "true"
import java.util.List;
import java.util.stream.Collectors;
public class Test {
static String test(List<String> list) {
String sb = "";
if(!list.isEmpty()) {
sb = list.stream().filter(s -> !s.isEmpty()).collect(Collectors.joining());
}
String s = sb;
return s.trim();
}
}
@@ -0,0 +1,16 @@
// "Replace with collect" "false"
import java.util.List;
public class Test {
static String test(List<String> list) {
// Not supported for now
StringBuilder sb = new StringBuilder("initial");
for (String s : li<caret>st) {
if (!s.isEmpty()) {
sb.append(s);
}
}
return sb.toString().trim();
}
}
@@ -0,0 +1,18 @@
// "Replace with collect" "true"
import java.util.List;
public class Test {
static String test(List<String> list) {
StringBuffer sb = new StringBuffer();
if(!list.isEmpty()) {
for (String s : li<caret>st) {
if (!s.isEmpty()) {
sb.append(s);
}
}
}
String s = sb.toString();
return s.trim();
}
}