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 @Nullable
public static ModuleDescriptor getContainingModuleOrNull(@NotNull DeclarationDescriptor descriptor) { public static ModuleDescriptor getContainingModuleOrNull(@NotNull DeclarationDescriptor descriptor) {
ModuleDescriptor moduleDescriptor = getParentOfType(descriptor, ModuleDescriptor.class, false); while (descriptor != null) {
if (moduleDescriptor != null) { if (descriptor instanceof ModuleDescriptor) {
return moduleDescriptor; return (ModuleDescriptor) descriptor;
} }
PackageViewDescriptor packageViewDescriptor = getParentOfType(descriptor, PackageViewDescriptor.class, false); if (descriptor instanceof PackageViewDescriptor) {
if (packageViewDescriptor != null) { return ((PackageViewDescriptor) descriptor).getModule();
return packageViewDescriptor.getModule(); }
descriptor = descriptor.getContainingDeclaration();
} }
return null; return null;
} }