make chained call completion work with names like Assert or Arrays

This commit is contained in:
peter
2012-02-21 19:20:14 +01:00
parent 6dcb6d64b0
commit 13e2e96658
5 changed files with 26 additions and 5 deletions
@@ -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>
}
}
@@ -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
}
@@ -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']
}
}
@@ -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