mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
make the statically imported suggestions obey the expected type (IDEA-59720)
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
+14
-13
@@ -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>);
|
||||
}
|
||||
}
|
||||
+2
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user