IDEA-83918 Error completion behaviour for methods in imports.

This commit is contained in:
peter
2012-04-25 22:12:42 +02:00
parent 0b7b3518ad
commit 39b1487491
6 changed files with 21 additions and 3 deletions
@@ -449,7 +449,7 @@ public class JavaCompletionUtil {
final Set<PsiMember> mentioned = new THashSet<PsiMember>();
for (CompletionElement completionElement : processor.getResults()) {
LookupElement item = createLookupElement(completionElement);
LookupElement item = createLookupElement(completionElement, javaReference);
if (item != null) {
item.putUserData(QUALIFIER_TYPE_ATTR, qualifierType);
final Object o = item.getObject();
@@ -603,10 +603,15 @@ public class JavaCompletionUtil {
}), 1);
}
private static LookupElement createLookupElement(CompletionElement completionElement) {
private static LookupElement createLookupElement(CompletionElement completionElement, PsiJavaReference reference) {
Object completion = completionElement.getElement();
assert !(completion instanceof LookupElement);
if (completion instanceof PsiMethod &&
reference instanceof PsiJavaCodeReferenceElement &&
((PsiJavaCodeReferenceElement)reference).getParent() instanceof PsiImportStaticStatement) {
return JavaLookupElementBuilder.forMethod((PsiMethod)completion, PsiSubstitutor.EMPTY);
}
LookupElement _ret = LookupItemUtil.objectToLookupItem(completion);
if (_ret == null || !(_ret instanceof LookupItem)) return null;
@@ -764,7 +764,7 @@ public class PsiJavaCodeReferenceElementImpl extends CompositePsiElement impleme
@Override
public void processVariants(final PsiScopeProcessor processor) {
final OrFilter filter = new OrFilter();
if (isInCode()) {
if (isInCode() && !(getParent() instanceof PsiImportStatement)) {
filter.addFilter(new AndFilter(ElementClassFilter.METHOD, new NotFilter(new ConstructorFilter())));
filter.addFilter(ElementClassFilter.VARIABLE);
}
@@ -0,0 +1,2 @@
import static java.util.Collections.emptySe<caret>
class A {}
@@ -0,0 +1,2 @@
import static java.util.Collections.emptySet<caret>
class A {}
@@ -0,0 +1,2 @@
import java.util.Collections.<caret>
class A {}
@@ -638,6 +638,13 @@ public class ListUtils {
assert lookup.currentItem != myFixture.lookupElements[0]
assert 'finalize' == lookup.currentItem.lookupString
}
public void testNoMethodsInNonStaticImports() {
configure()
assertStringItems("*")
}
public void testMembersInStaticImports() { doTest() }
public void testPackageNamedVariableBeforeAssignment() throws Throwable {
doTest();