make the statically imported suggestions obey the expected type (IDEA-59720)

This commit is contained in:
peter.gromov
2010-10-18 21:16:35 +04:00
parent abf5792a3f
commit 127a5b0b8e
4 changed files with 30 additions and 14 deletions
@@ -888,7 +888,9 @@ public class JavaCompletionUtil {
memberProcessor.processMembersOfRegisteredClasses(matcher, new PairConsumer<PsiMember, PsiClass>() {
@Override
public void consume(PsiMember member, PsiClass psiClass) {
set.add(memberProcessor.createLookupElement(member, psiClass, true));
if (processor.satisfies(member, ResolveState.initial())) {
set.add(memberProcessor.createLookupElement(member, psiClass, true));
}
}
});
}
@@ -132,18 +132,25 @@ public class JavaCompletionProcessor extends BaseScopeProcessor implements Eleme
}
}
if (myFilter.isClassAcceptable(element.getClass())
&& myFilter.isAcceptable(new CandidateInfo(element, state.get(PsiSubstitutor.KEY)), myElement)) {
final String name = PsiUtil.getName(element);
if (StringUtil.isNotEmpty(name) && (myMatcher == null || myMatcher.value(name))) {
if(isAccessible(element)){
add(new CompletionElement(myQualifierType, element, state.get(PsiSubstitutor.KEY), myQualifierClass));
}
if (satisfies(element, state) && isAccessible(element)) {
CompletionElement element1 = new CompletionElement(myQualifierType, element, state.get(PsiSubstitutor.KEY), myQualifierClass);
if (myResultNames.add(element1.getUniqueId())) {
myResults.add(element1);
}
}
return true;
}
public boolean satisfies(@NotNull PsiElement element, @NotNull ResolveState state) {
final String name = PsiUtil.getName(element);
if (StringUtil.isNotEmpty(name) && (myMatcher == null || myMatcher.value(name))) {
if (myFilter.isClassAcceptable(element.getClass()) && myFilter.isAcceptable(new CandidateInfo(element, state.get(PsiSubstitutor.KEY)), myElement)) {
return true;
}
}
return false;
}
@Nullable
public PsiType getQualifierType() {
return myQualifierType;
@@ -156,12 +163,6 @@ public class JavaCompletionProcessor extends BaseScopeProcessor implements Eleme
return JavaPsiFacade.getInstance(element.getProject()).getResolveHelper().isAccessible((PsiMember)element, myElement, myQualifierClass);
}
private void add(CompletionElement element){
if(myResultNames.add(element.getUniqueId())){
myResults.add(element);
}
}
public void setCompletionElements(@NotNull Object[] elements) {
for (Object element: elements) {
myResults.add(new CompletionElement(null, element, PsiSubstitutor.EMPTY, myQualifierClass));
@@ -0,0 +1,11 @@
import java.util.ArrayList;
import java.util.List;
import static java.lang.Math.*;
public class TestClass {
private List<String> testList;
public void testMe() {
List<String> newList = new ArrayList<String>(at<caret>);
}
}
@@ -968,6 +968,8 @@ public class SmartTypeCompletionTest extends LightCompletionTestCase {
public void testWildcardedInstanceof2() throws Throwable { doTest(); }
public void testWildcardedInstanceof3() throws Throwable { doTest(); }
public void testCheckStaticImportsType() throws Throwable { doAntiTest(); }
public void testTypeVariableInstanceOf() throws Throwable {
configureByTestName();
performAction();