diff --git a/compiler/frontend/src/org/jetbrains/kotlin/idea/MainFunctionDetector.kt b/compiler/frontend/src/org/jetbrains/kotlin/idea/MainFunctionDetector.kt index 2ca23922e2e..e0a0e251fda 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/idea/MainFunctionDetector.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/idea/MainFunctionDetector.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.psi.KtNamedFunction import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.annotations.hasJvmStaticAnnotation +import org.jetbrains.kotlin.resolve.descriptorUtil.module import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.types.Variance @@ -70,7 +71,7 @@ class MainFunctionDetector { fun getMainFunction(module: ModuleDescriptor): FunctionDescriptor? = getMainFunction(module, module.getPackage(FqName.ROOT)) private fun getMainFunction(module: ModuleDescriptor, packageView: PackageViewDescriptor): FunctionDescriptor? { - for (packageFragment in packageView.fragments) { + for (packageFragment in packageView.fragments.filter { it.module == module }) { DescriptorUtils.getAllDescriptors(packageFragment.getMemberScope()) .filterIsInstance() .firstOrNull { isMain(it) } diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/general/JetTestFunctionDetector.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/general/JetTestFunctionDetector.java index 85cf2e62876..423c9c31281 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/general/JetTestFunctionDetector.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/general/JetTestFunctionDetector.java @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.kotlin.descriptors.annotations.Annotations; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.resolve.DescriptorUtils; +import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter; import org.jetbrains.kotlin.resolve.scopes.MemberScope; import org.jetbrains.kotlin.types.KotlinType; @@ -72,7 +73,9 @@ public class JetTestFunctionDetector { @NotNull List foundFunctions ) { for (PackageFragmentDescriptor packageDescriptor : moduleDescriptor.getPackage(packageName).getFragments()) { - Collection descriptors = DescriptorUtils.getAllDescriptors(packageDescriptor.getMemberScope()); + if (DescriptorUtils.getContainingModule(packageDescriptor) != moduleDescriptor) continue; + Collection descriptors = packageDescriptor.getMemberScope().getContributedDescriptors( + DescriptorKindFilter.CLASSIFIERS, MemberScope.Companion.getALL_NAME_FILTER()); for (DeclarationDescriptor descriptor : descriptors) { if (descriptor instanceof ClassDescriptor) { getTestFunctions((ClassDescriptor) descriptor, foundFunctions); @@ -85,7 +88,6 @@ public class JetTestFunctionDetector { } } - @NotNull private static void getTestFunctions( @NotNull ClassDescriptor classDescriptor, @NotNull List foundFunctions @@ -93,7 +95,8 @@ public class JetTestFunctionDetector { if (classDescriptor.getModality() == Modality.ABSTRACT) return; - Collection allDescriptors = DescriptorUtils.getAllDescriptors(classDescriptor.getUnsubstitutedMemberScope()); + Collection allDescriptors = classDescriptor.getUnsubstitutedMemberScope().getContributedDescriptors( + DescriptorKindFilter.FUNCTIONS, MemberScope.Companion.getALL_NAME_FILTER()); List testFunctions = ContainerUtil.mapNotNull( allDescriptors, descriptor-> {