Check found fqnames for validness before searching for descriptors
This commit is contained in:
@@ -355,13 +355,26 @@ public class JetShortNamesCache extends PsiShortNamesCache {
|
|||||||
for (String fqName : JetFullClassNameIndex.getInstance().getAllKeys(project)) {
|
for (String fqName : JetFullClassNameIndex.getInstance().getAllKeys(project)) {
|
||||||
FqName classFQName = new FqName(fqName);
|
FqName classFQName = new FqName(fqName);
|
||||||
if (acceptedShortNameCondition.value(classFQName.shortName().getName())) {
|
if (acceptedShortNameCondition.value(classFQName.shortName().getName())) {
|
||||||
classDescriptors.addAll(ResolveSessionUtils.getClassDescriptorsByFqName(analyzer, classFQName));
|
classDescriptors.addAll(getJetClassesDescriptorsByFQName(analyzer, classFQName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return classDescriptors;
|
return classDescriptors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Collection<ClassDescriptor> getJetClassesDescriptorsByFQName(@NotNull KotlinCodeAnalyzer analyzer, @NotNull FqName classFQName) {
|
||||||
|
Collection<JetClassOrObject> jetClassOrObjects = JetFullClassNameIndex.getInstance().get(
|
||||||
|
classFQName.getFqName(), project, GlobalSearchScope.allScope(project));
|
||||||
|
|
||||||
|
if (jetClassOrObjects.isEmpty()) {
|
||||||
|
// This fqn is absent in caches, dead or not in scope
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Note: Can't search with psi element as analyzer could be built over temp files
|
||||||
|
return ResolveSessionUtils.getClassDescriptorsByFqName(analyzer, classFQName);
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public PsiMethod[] getMethodsByName(@NonNls @NotNull String name, @NotNull GlobalSearchScope scope) {
|
public PsiMethod[] getMethodsByName(@NonNls @NotNull String name, @NotNull GlobalSearchScope scope) {
|
||||||
|
|||||||
Reference in New Issue
Block a user