From 22168aa026f1c1719acdb5af1b1aa52a7020ada3 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Mon, 1 Jun 2015 22:03:36 +0200 Subject: [PATCH] optimize DescriptorUtils.getContainingModuleOrNull() by removing duplicate parent traversal and Class.isInstance() checks --- .../jetbrains/kotlin/resolve/DescriptorUtils.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java index ed944f07f3f..d0e00fc178e 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java @@ -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; }