mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-21 22:11:40 +07:00
IDEA-206386 Stream.toUnmodifiableList autocompletion (and mockJDK-11 to test it)
This commit is contained in:
@@ -44,7 +44,7 @@ class CollectConversion {
|
||||
return;
|
||||
}
|
||||
|
||||
convertQualifierViaCollectors(ref, expectedTypes, consumer, qualifier);
|
||||
convertQualifierViaCollectors(ref, expectedTypes, consumer, qualifier, collectors);
|
||||
}
|
||||
|
||||
private static void suggestCollectorsArgument(Collection<? extends ExpectedTypeInfo> expectedTypes, Consumer<? super LookupElement> consumer, PsiClass collectors, PsiExpression qualifier) {
|
||||
@@ -64,8 +64,11 @@ class CollectConversion {
|
||||
|
||||
private static void convertQualifierViaCollectors(PsiReferenceExpression ref,
|
||||
Collection<? extends ExpectedTypeInfo> expectedTypes,
|
||||
Consumer<? super LookupElement> consumer, PsiExpression qualifier) {
|
||||
Consumer<? super LookupElement> consumer,
|
||||
PsiExpression qualifier,
|
||||
@NotNull PsiClass collectors) {
|
||||
for (Pair<String, PsiType> pair : suggestCollectors(expectedTypes, qualifier)) {
|
||||
if (collectors.findMethodsByName(pair.first, true).length == 0) continue;
|
||||
consumer.consume(new MyLookupElement(pair.first, pair.second, ref));
|
||||
}
|
||||
}
|
||||
@@ -119,9 +122,11 @@ class CollectConversion {
|
||||
List<Pair<String, PsiType>> result = new ArrayList<>();
|
||||
if (listType != null) {
|
||||
result.add(Pair.create("toList", listType));
|
||||
result.add(Pair.create("toUnmodifiableList", listType));
|
||||
}
|
||||
if (setType != null) {
|
||||
result.add(Pair.create("toSet", setType));
|
||||
result.add(Pair.create("toUnmodifiableSet", setType));
|
||||
}
|
||||
if (expectedTypes.isEmpty() || hasIterable) {
|
||||
result.add(Pair.create("toCollection", factory.createType(collection, component)));
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
import java.util.*;
|
||||
|
||||
class Foo {
|
||||
void m() {
|
||||
Arrays.asList("a", "b").stream().toUnmod<caret>
|
||||
}
|
||||
}
|
||||
@@ -56,4 +56,10 @@ class Normal11CompletionTest extends NormalCompletionTestCase {
|
||||
myFixture.checkResult(fullText)
|
||||
return var
|
||||
}
|
||||
|
||||
void testToUnmodifiable() {
|
||||
configureByTestName()
|
||||
myFixture.assertPreferredCompletionItems 0, 'collect(Collectors.toUnmodifiableList())', 'collect(Collectors.toUnmodifiableSet())'
|
||||
}
|
||||
|
||||
}
|
||||
@@ -245,7 +245,7 @@ class Test88 {
|
||||
|
||||
void testAllCollectors() {
|
||||
configureByTestName()
|
||||
myFixture.assertPreferredCompletionItems 0, 'collect', 'collect', 'collect(Collectors.toCollection())', 'collect(Collectors.toList())', 'collect(Collectors.toSet())'
|
||||
assert myFixture.lookupElementStrings == ['collect', 'collect', 'collect(Collectors.toCollection())', 'collect(Collectors.toList())', 'collect(Collectors.toSet())']
|
||||
selectItem(myItems.find { it.lookupString.contains('toCollection') })
|
||||
checkResultByFileName()
|
||||
}
|
||||
|
||||
BIN
java/mockJDK-11/jre/lib/annotations.jar
Normal file
BIN
java/mockJDK-11/jre/lib/annotations.jar
Normal file
Binary file not shown.
BIN
java/mockJDK-11/jre/lib/rt.jar
Normal file
BIN
java/mockJDK-11/jre/lib/rt.jar
Normal file
Binary file not shown.
@@ -71,8 +71,12 @@ public class IdeaTestUtil extends PlatformTestUtil {
|
||||
|
||||
@NotNull
|
||||
public static Sdk getMockJdk(@NotNull JavaVersion version) {
|
||||
int mockJdk = version.feature >= 9 ? 9 : version.feature >= 7 ? version.feature : version.feature >= 5 ? 7 : 4;
|
||||
String path = getPathForJdkNamed(MOCK_JDK_DIR_NAME_PREFIX + "1." + mockJdk).getPath();
|
||||
int mockJdk = version.feature >= 11 ? 11 :
|
||||
version.feature >= 9 ? 9 :
|
||||
version.feature >= 7 ? version.feature :
|
||||
version.feature >= 5 ? 7 :
|
||||
4;
|
||||
String path = getPathForJdkNamed(MOCK_JDK_DIR_NAME_PREFIX + (mockJdk < 11 ? "1." : "") + mockJdk).getPath();
|
||||
return createMockJdk("java " + version, path);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user