optimize DescriptorUtils.getContainingModuleOrNull() by removing duplicate parent traversal and Class.isInstance() checks

This commit is contained in:
Dmitry Jemerov
2015-06-01 22:03:36 +02:00
parent 252ddf4e2e
commit 22168aa026
@@ -191,13 +191,14 @@ public class DescriptorUtils {
@Nullable
public static ModuleDescriptor getContainingModuleOrNull(@NotNull DeclarationDescriptor descriptor) {
ModuleDescriptor moduleDescriptor = getParentOfType(descriptor, ModuleDescriptor.class, false);
if (moduleDescriptor != null) {
return moduleDescriptor;
}
PackageViewDescriptor packageViewDescriptor = getParentOfType(descriptor, PackageViewDescriptor.class, false);
if (packageViewDescriptor != null) {
return packageViewDescriptor.getModule();
while (descriptor != null) {
if (descriptor instanceof ModuleDescriptor) {
return (ModuleDescriptor) descriptor;
}
if (descriptor instanceof PackageViewDescriptor) {
return ((PackageViewDescriptor) descriptor).getModule();
}
descriptor = descriptor.getContainingDeclaration();
}
return null;
}