Optimized checking if reference to builtin.
It was slowing up usages search for back-references to standard library (not builtins, but in "kotlin" package)
This commit is contained in:
+11
-1
@@ -199,6 +199,8 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent {
|
||||
return findCurrentDescriptorForMember(unwrapFakeOverride((CallableMemberDescriptor) originalDescriptor).getOriginal());
|
||||
}
|
||||
|
||||
if (!isFromBuiltinModule(originalDescriptor)) return null;
|
||||
|
||||
DeclarationDescriptor containingDeclaration = findCurrentDescriptor(originalDescriptor.getContainingDeclaration());
|
||||
JetScope memberScope = getMemberScope(containingDeclaration);
|
||||
if (memberScope == null) return null;
|
||||
@@ -222,10 +224,12 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent {
|
||||
@Nullable
|
||||
private DeclarationDescriptor findCurrentDescriptor(@NotNull DeclarationDescriptor originalDescriptor) {
|
||||
if (originalDescriptor instanceof ClassDescriptor) {
|
||||
if (!isFromBuiltinModule(originalDescriptor)) return null;
|
||||
return findCurrentDescriptorForClass((ClassDescriptor) originalDescriptor);
|
||||
}
|
||||
else if (originalDescriptor instanceof PackageFragmentDescriptor) {
|
||||
return KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME.equals(((PackageFragmentDescriptor) originalDescriptor).getFqName())
|
||||
return isFromBuiltinModule(originalDescriptor)
|
||||
&& KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME.equals(((PackageFragmentDescriptor) originalDescriptor).getFqName())
|
||||
? builtinsPackageFragment
|
||||
: null;
|
||||
}
|
||||
@@ -237,6 +241,12 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent {
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isFromBuiltinModule(@NotNull DeclarationDescriptor originalDescriptor) {
|
||||
// TODO This is optimization only
|
||||
// It should be rewritten by checking declarationDescriptor.getSource(), when the latter returns something non-trivial for builtins.
|
||||
return KotlinBuiltIns.getInstance().getBuiltInsModule() == DescriptorUtils.getContainingModule(originalDescriptor);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Collection<PsiElement> resolveBuiltInSymbol(@NotNull DeclarationDescriptor declarationDescriptor) {
|
||||
if (bindingContext == null) {
|
||||
|
||||
Reference in New Issue
Block a user