mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-17 19:49:44 +07:00
IDEA-61337 Don't suggest default-package classes in non-default package context
This commit is contained in:
@@ -587,11 +587,16 @@ public class JavaCompletionUtil {
|
||||
|
||||
boolean mayHighlight = qualifierType != null && (castedQualifierType == null || !qualifierType.isAssignableFrom(castedQualifierType));
|
||||
|
||||
final boolean pkgContext = inSomePackage(element);
|
||||
|
||||
final Set<PsiMember> mentioned = new THashSet<PsiMember>();
|
||||
for (CompletionElement completionElement : plainResults) {
|
||||
LookupElement item = createLookupElement(completionElement, qualifierType);
|
||||
if (item != null) {
|
||||
final Object o = item.getObject();
|
||||
if (o instanceof PsiClass && !isSourceLevelAccessible(element, (PsiClass)o, pkgContext)) {
|
||||
continue;
|
||||
}
|
||||
if (o instanceof PsiMember) {
|
||||
mentioned.add((PsiMember)o);
|
||||
}
|
||||
@@ -1002,4 +1007,24 @@ public class JavaCompletionUtil {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean inSomePackage(PsiElement context) {
|
||||
PsiFile contextFile = context.getContainingFile();
|
||||
return contextFile instanceof PsiClassOwner && StringUtil.isNotEmpty(((PsiClassOwner)contextFile).getPackageName());
|
||||
}
|
||||
|
||||
public static boolean isSourceLevelAccessible(PsiElement context, PsiClass psiClass, final boolean pkgContext) {
|
||||
if (!JavaPsiFacade.getInstance(psiClass.getProject()).getResolveHelper().isAccessible(psiClass, context, psiClass)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (pkgContext) {
|
||||
PsiFile classFile = psiClass.getContainingFile();
|
||||
if (classFile instanceof PsiClassOwner && StringUtil.isEmpty(((PsiClassOwner)classFile).getPackageName())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user