mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
make chained call completion work with names like Assert or Arrays
This commit is contained in:
@@ -18,11 +18,9 @@ package com.intellij.codeInsight.completion;
|
||||
import com.intellij.codeInsight.completion.impl.CamelHumpMatcher;
|
||||
import com.intellij.codeInsight.lookup.AutoCompletionPolicy;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiJavaCodeReferenceElement;
|
||||
import com.intellij.psi.PsiReferenceExpression;
|
||||
import com.intellij.psi.PsiType;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.filters.ElementFilter;
|
||||
import com.intellij.psi.search.PsiShortNamesCache;
|
||||
import com.intellij.util.CollectConsumer;
|
||||
import com.intellij.util.Consumer;
|
||||
|
||||
@@ -92,6 +90,11 @@ public class JavaNoVariantsDelegator extends NoVariantsDelegator {
|
||||
PrefixMatcher qMatcher = new CamelHumpMatcher(referenceName);
|
||||
Set<LookupElement> plainVariants =
|
||||
JavaSmartCompletionContributor.completeReference(qualifier, qualifier, filter, true, true, parameters, qMatcher);
|
||||
|
||||
for (PsiClass aClass : PsiShortNamesCache.getInstance(qualifier.getProject()).getClassesByName(referenceName, qualifier.getResolveScope())) {
|
||||
plainVariants.add(JavaClassNameCompletionContributor.createClassLookupItem(aClass, true));
|
||||
}
|
||||
|
||||
if (!plainVariants.isEmpty()) {
|
||||
return plainVariants;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
class Foo {
|
||||
{
|
||||
Assert.<caret>
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -989,7 +989,7 @@ class Foo {
|
||||
myFixture.configureByText "a.java", "class Foo {{ <caret> }}"
|
||||
type 'Arrays.'
|
||||
myFixture.checkResult "class Foo {{ Arrays.<caret> }}"
|
||||
assert !lookup
|
||||
assert 'Arrays.asList' in myFixture.lookupElementStrings
|
||||
}
|
||||
|
||||
|
||||
|
||||
+7
@@ -1290,4 +1290,11 @@ public class ListUtils {
|
||||
checkResult()
|
||||
}
|
||||
|
||||
public void testAllAssertClassesMethods() {
|
||||
myFixture.addClass 'package foo; public class Assert { public static void foo() {} }'
|
||||
myFixture.addClass 'package bar; public class Assert { public static void bar() {} }'
|
||||
configure()
|
||||
assert myFixture.lookupElementStrings == ['Assert.bar', 'Assert.foo']
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+6
@@ -23,6 +23,7 @@ import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiType;
|
||||
import com.intellij.psi.search.PsiShortNamesCache;
|
||||
import com.intellij.util.Consumer;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.GrReferenceElement;
|
||||
@@ -135,6 +136,11 @@ public class GroovyNoVariantsDelegator extends NoVariantsDelegator {
|
||||
}
|
||||
}
|
||||
|
||||
for (PsiClass aClass : PsiShortNamesCache.getInstance(qualifier.getProject()).getClassesByName(referenceName, qualifier.getResolveScope())) {
|
||||
variants.add(GroovyCompletionUtil.createClassLookupItem(aClass));
|
||||
}
|
||||
|
||||
|
||||
if (variants.isEmpty()) {
|
||||
GroovyCompletionContributor.addAllClasses(parameters, new Consumer<LookupElement>() {
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user