IDEA-183326 Comment disappears in stream to loop

This commit is contained in:
Tagir Valeev
2017-12-06 17:47:22 +07:00
parent d1b0d1dea4
commit ac8ad2c822
5 changed files with 16 additions and 15 deletions
@@ -279,7 +279,7 @@ class CollectMigration extends BaseStreamApiMigration {
}
public String generateCollector(CommentTracker ct) {
return getCollectionCollector(ct.markUnchanged(myInitializer), myTargetType);
return getCollectionCollector(ct, myInitializer, myTargetType);
}
@Override
@@ -313,7 +313,7 @@ class CollectMigration extends BaseStreamApiMigration {
}
@NotNull
private static String getCollectionCollector(PsiExpression initializer, PsiType type) {
private static String getCollectionCollector(CommentTracker ct, PsiExpression initializer, PsiType type) {
String collector;
PsiType initializerType = initializer.getType();
PsiClassType rawType = initializerType instanceof PsiClassType ? ((PsiClassType)initializerType).rawType() : null;
@@ -332,7 +332,7 @@ class CollectMigration extends BaseStreamApiMigration {
}
else {
PsiExpression copy = JavaPsiFacade.getElementFactory(initializer.getProject())
.createExpressionFromText(initializer.getText(), initializer);
.createExpressionFromText(ct.text(initializer), initializer);
if (copy instanceof PsiNewExpression) {
PsiExpressionList argumentList = ((PsiNewExpression)copy).getArgumentList();
if (argumentList != null) {
@@ -865,7 +865,7 @@ class CollectMigration extends BaseStreamApiMigration {
@Override
public String generateTerminal(CommentTracker ct) {
return ".collect(" + getCollectionCollector(ct.markUnchanged(myCreateExpression), myResultType) + ")";
return ".collect(" + getCollectionCollector(ct, ct.markUnchanged(myCreateExpression), myResultType) + ")";
}
@Override
@@ -6,10 +6,10 @@ import java.util.stream.Collectors;
public class Test {
void testList(List<String> input) {
List<String> result = input.stream().filter(s -> !s.isEmpty()).collect(Collectors.toCollection(() -> new ArrayList<>(10)));
List<String> result = input.stream().filter(s -> !s.isEmpty()).collect(Collectors.toCollection(() -> new ArrayList<>(/*initial size*/10)));
System.out.println(result);
ArrayList<String> result2 = input.stream().filter(s -> !s.isEmpty()).collect(Collectors.toCollection(() -> new ArrayList<>(20)));
ArrayList<String> result2 = input.stream().filter(s -> !s.isEmpty()).collect(Collectors.toCollection(() -> new ArrayList<>/*valuable comment*/(20)));
System.out.println(result2);
// Non-empty
@@ -26,10 +26,10 @@ public class Test {
}
void testSet(List<String> input) {
Set<String> result = input.stream().filter(s -> !s.isEmpty()).collect(Collectors.toCollection(() -> new HashSet<>(10)));
Set<String> result = input.stream().filter(s -> !s.isEmpty()).collect(Collectors.toCollection(() -> new HashSet/*comment*/<>(/*size*/10)));
System.out.println(result);
Collection<String> result2 = input.stream().filter(s -> !s.isEmpty()).collect(Collectors.toCollection(() -> new LinkedHashSet<>(20, 0.8f)));
Collection<String> result2 = input.stream().filter(s -> !s.isEmpty()).collect(Collectors.toCollection(() -> new LinkedHashSet<>(20, /*load factor*/ 0.8f)));
System.out.println(result2);
// Non-empty
@@ -37,7 +37,7 @@ public class Test {
input.stream().filter(s -> !s.isEmpty()).forEach(result3::add);
System.out.println(result3);
Collection<TimeUnit> result4 = input.stream().filter(s -> !s.isEmpty()).map(TimeUnit::valueOf).collect(Collectors.toCollection(() -> EnumSet.noneOf(TimeUnit.class)));
Collection<TimeUnit> result4 = input.stream().filter(s -> !s.isEmpty()).map(TimeUnit::valueOf).collect(Collectors.toCollection(() -> EnumSet.noneOf(/*timeunits*/TimeUnit.class)));
System.out.println(result4);
}
@@ -11,5 +11,6 @@ public class Collect {
void collectNames(List<Person> persons){
Set<String> names = persons.stream().map(Person::getName).collect(Collectors.toSet());
/*valuable comment*/
}
}
@@ -5,7 +5,7 @@ import java.util.concurrent.TimeUnit;
public class Test {
void testList(List<String> input) {
List<String> result = new ArrayList<>(10);
List<String> result = new ArrayList<>(/*initial size*/10);
for (String s : in<caret>put) {
if (!s.isEmpty()) {
result.add(s);
@@ -13,7 +13,7 @@ public class Test {
}
System.out.println(result);
ArrayList<String> result2 = new ArrayList<>(20);
ArrayList<String> result2 = new ArrayList<>/*valuable comment*/(20);
for (String s : input) {
if (!s.isEmpty()) {
result2.add(s);
@@ -43,7 +43,7 @@ public class Test {
}
void testSet(List<String> input) {
Set<String> result = new HashSet<>(10);
Set<String> result = new HashSet/*comment*/<>(/*size*/10);
for (String s : input) {
if (!s.isEmpty()) {
result.add(s);
@@ -51,7 +51,7 @@ public class Test {
}
System.out.println(result);
Collection<String> result2 = new LinkedHashSet<>(20, 0.8f);
Collection<String> result2 = new LinkedHashSet<>(20, /*load factor*/ 0.8f);
for (String s : input) {
if (!s.isEmpty()) {
result2.add(s);
@@ -68,7 +68,7 @@ public class Test {
}
System.out.println(result3);
Collection<TimeUnit> result4 = EnumSet.noneOf(TimeUnit.class);
Collection<TimeUnit> result4 = EnumSet.noneOf(/*timeunits*/TimeUnit.class);
for (String s : input) {
if (!s.isEmpty()) {
result4.add(TimeUnit.valueOf(s));
@@ -9,7 +9,7 @@ public class Collect {
}
void collectNames(List<Person> persons){
Set<String> names = new HashSet<>();
Set<String> names = new HashSet/*valuable comment*/<>();
for (Person person : pers<caret>ons) {
names.add(person.getName());
}