IDEA-143934 Failed to complete static methods on class from excluded package

This commit is contained in:
peter
2015-10-06 18:33:47 +02:00
parent 5c9c2197fa
commit 4658e65121
5 changed files with 26 additions and 2 deletions
@@ -285,6 +285,9 @@ public class JavaCompletionUtil {
final boolean pkgContext = inSomePackage(element);
PsiClass qualifierClass = PsiUtil.resolveClassInClassTypeOnly(qualifierType);
final boolean honorExcludes = qualifierClass == null || !isInExcludedPackage(qualifierClass, false);
final Set<PsiMember> mentioned = new THashSet<PsiMember>();
for (CompletionElement completionElement : processor.getResults()) {
for (LookupElement item : createLookupElements(completionElement, javaReference)) {
@@ -294,7 +297,7 @@ public class JavaCompletionUtil {
continue;
}
if (o instanceof PsiMember) {
if (isInExcludedPackage((PsiMember)o, true)) {
if (honorExcludes && isInExcludedPackage((PsiMember)o, true)) {
continue;
}
mentioned.add(CompletionUtil.getOriginalOrSelf((PsiMember)o));
@@ -0,0 +1,6 @@
public class Main {
void f() {
foo.Outer.m<caret>x
}
}
@@ -441,6 +441,13 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase {
assert myFixture.lookupElementStrings == ['Inner']
}
public void testStaticMethodOfExcludedClass() {
JavaProjectCodeInsightSettings.setExcludedNames(project, testRootDisposable, "foo")
myFixture.addClass 'package foo; public class Outer { public static void method() {} }'
configure()
assert myFixture.lookupElementStrings == ['method']
}
public void testAtUnderClass() throws Throwable {
doTest('\n');
}
@@ -229,6 +229,9 @@ public class GrMainCompletionProvider extends CompletionProvider<CompletionParam
final List<LookupElement> zeroPriority = ContainerUtil.newArrayList();
PsiClass qualifierClass = com.intellij.psi.util.PsiUtil.resolveClassInClassTypeOnly(qualifierType);
final boolean honorExcludes = qualifierClass == null || !JavaCompletionUtil.isInExcludedPackage(qualifierClass, false);
GroovyCompletionUtil.processVariants(reference, matcher, parameters, new Consumer<LookupElement>() {
@Override
public void consume(LookupElement lookupElement) {
@@ -245,7 +248,7 @@ public class GrMainCompletionProvider extends CompletionProvider<CompletionParam
return;
}
if (object instanceof PsiMember && JavaCompletionUtil.isInExcludedPackage((PsiMember)object, true)) {
if (honorExcludes && object instanceof PsiMember && JavaCompletionUtil.isInExcludedPackage((PsiMember)object, true)) {
return;
}
@@ -959,6 +959,11 @@ class Fopppp {
assert !doContainsTest('StringBuffer', 'StringBuff<caret>f')
}
public void testStaticMethodOnExcludedClass() {
JavaProjectCodeInsightSettings.setExcludedNames(project, testRootDisposable, String.name)
assert doContainsTest('valueOf', 'String.val<caret>f')
}
private doContainsTest(String itemToCheck, String text) {
myFixture.configureByText "a.groovy", text