diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyFileScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyFileScope.kt index 38d2cf88f6b..fcc15ce90e7 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyFileScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyFileScope.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.resolve.JetModuleUtil import org.jetbrains.kotlin.resolve.NoSubpackagesInPackageScope import org.jetbrains.kotlin.resolve.scopes.JetScope import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor +import org.jetbrains.kotlin.name.FqName class LazyFileScope private( private val aliasImportsScope: LazyImportScope, @@ -71,13 +72,16 @@ class LazyFileScope private( file.getImportDirectives() val packageView = getPackageViewDescriptor(file, resolveSession) + val inRootPackage = packageView.getFqName().isRoot() + val rootPackageView = resolveSession.getModuleDescriptor().getPackage(FqName.ROOT) + ?: throw IllegalStateException("Root package not found") val currentPackageMembersScope = NoSubpackagesInPackageScope(packageView) val rootPackagesScope = JetModuleUtil.getSubpackagesOfRootScope(resolveSession.getModuleDescriptor()) - val aliasImportsScope = LazyImportScope(resolveSession, packageView, AliasImportsIndexed(imports), traceForImportResolve, "Alias imports in $debugName") - val allUnderImportsScope = LazyImportScope(resolveSession, packageView, AllUnderImportsIndexed(imports), traceForImportResolve, "All under imports in $debugName") - val defaultAliasImportsScope = LazyImportScope(resolveSession, packageView, AliasImportsIndexed(defaultImports), traceForDefaultImportResolve, "Default alias imports in $debugName") - val defaultAllUnderImportsScope = LazyImportScope(resolveSession, packageView, AllUnderImportsIndexed(defaultImports), traceForDefaultImportResolve, "Default all under imports in $debugName") + val aliasImportsScope = LazyImportScope(resolveSession, packageView, AliasImportsIndexed(imports), traceForImportResolve, "Alias imports in $debugName", inRootPackage) + val allUnderImportsScope = LazyImportScope(resolveSession, packageView, AllUnderImportsIndexed(imports), traceForImportResolve, "All under imports in $debugName", inRootPackage) + val defaultAliasImportsScope = LazyImportScope(resolveSession, rootPackageView, AliasImportsIndexed(defaultImports), traceForDefaultImportResolve, "Default alias imports in $debugName", false) + val defaultAllUnderImportsScope = LazyImportScope(resolveSession, rootPackageView, AllUnderImportsIndexed(defaultImports), traceForDefaultImportResolve, "Default all under imports in $debugName", false) return LazyFileScope(aliasImportsScope, allUnderImportsScope, defaultAliasImportsScope, defaultAllUnderImportsScope, currentPackageMembersScope, rootPackagesScope, additionalScopes, diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyImportScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyImportScope.kt index 07af33250bd..cd42c855436 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyImportScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyImportScope.kt @@ -66,13 +66,13 @@ class LazyImportScope( private val containingDeclaration: PackageViewDescriptor, private val indexedImports: IndexedImports, private val traceForImportResolve: BindingTrace, - private val debugName: String + private val debugName: String, + private val inRootPackage: Boolean ) : JetScope { private val importedScopesProvider = resolveSession.getStorageManager().createMemoizedFunction { (directive: JetImportDirective) -> ImportDirectiveResolveCache(directive) } - private val inRootPackage = containingDeclaration.getFqName().isRoot() private val rootScope = JetModuleUtil.getImportsResolutionScope(resolveSession.getModuleDescriptor(), inRootPackage) private var directiveUnderResolve: JetImportDirective? = null