mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
IDEA-143934 Failed to complete static methods on class from excluded package
This commit is contained in:
@@ -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));
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
public class Main {
|
||||
void f() {
|
||||
foo.Outer.m<caret>x
|
||||
}
|
||||
|
||||
}
|
||||
+7
@@ -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');
|
||||
}
|
||||
|
||||
+4
-1
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
+5
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user