From c3cbfe34c4ff6f953faa5b720838e8f0b1589f75 Mon Sep 17 00:00:00 2001 From: Ilya Muradyan Date: Thu, 4 Jun 2020 14:15:52 +0300 Subject: [PATCH] Allow not to create default importing scopes --- .../kotlin/resolve/lazy/FileScopeFactory.kt | 41 +++++++++++-------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/FileScopeFactory.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/FileScopeFactory.kt index 65fa247d916..36a72ad74f5 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/FileScopeFactory.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/FileScopeFactory.kt @@ -58,11 +58,11 @@ class FileScopeFactory( override val importedFqName: FqName? get() = importPath.fqName } - fun createScopesForFile(file: KtFile, existingImports: ImportingScope? = null): FileScopes { + fun createScopesForFile(file: KtFile, existingImports: ImportingScope? = null, createDefaultImportingScopes: Boolean = true): FileScopes { val packageView = components.moduleDescriptor.getPackage(file.packageFqName) val packageFragment = topLevelDescriptorProvider.getPackageFragmentOrDiagnoseFailure(file.packageFqName, file) - return FilesScopesBuilder(file, existingImports, packageFragment, packageView).result + return FilesScopesBuilder(file, existingImports, packageFragment, packageView, createDefaultImportingScopes).result } private data class DefaultImportResolvers( @@ -137,7 +137,8 @@ class FileScopeFactory( private val file: KtFile, private val existingImports: ImportingScope?, private val packageFragment: PackageFragmentDescriptor, - private val packageView: PackageViewDescriptor + private val packageView: PackageViewDescriptor, + private val createDefaultImportingScopes: Boolean, ) { val imports = file.importDirectives val aliasImportNames = imports.mapNotNull { if (it.aliasName != null) it.importedFqName else null } @@ -197,15 +198,17 @@ class FileScopeFactory( val dummyContainerDescriptor = DummyContainerDescriptor(file, packageFragment) - var scope: ImportingScope + var scope: ImportingScope? = existingImports val debugName = "LazyFileScope for file " + file.name - scope = LazyImportScope( - existingImports, defaultAllUnderImportResolver, defaultLowPriorityImportResolver, - LazyImportScope.FilteringKind.INVISIBLE_CLASSES, - "Default all under imports in $debugName (invisible classes only)" - ) + if (createDefaultImportingScopes) { + scope = LazyImportScope( + scope, defaultAllUnderImportResolver, defaultLowPriorityImportResolver, + LazyImportScope.FilteringKind.INVISIBLE_CLASSES, + "Default all under imports in $debugName (invisible classes only)" + ) + } scope = LazyImportScope( scope, allUnderImportResolver, null, LazyImportScope.FilteringKind.INVISIBLE_CLASSES, @@ -214,20 +217,24 @@ class FileScopeFactory( scope = currentPackageScope(packageView, aliasImportNames, dummyContainerDescriptor, FilteringKind.INVISIBLE_CLASSES, scope) - scope = LazyImportScope( - scope, defaultAllUnderImportResolver, defaultLowPriorityImportResolver, LazyImportScope.FilteringKind.VISIBLE_CLASSES, - "Default all under imports in $debugName (visible classes)" - ) + if (createDefaultImportingScopes) { + scope = LazyImportScope( + scope, defaultAllUnderImportResolver, defaultLowPriorityImportResolver, LazyImportScope.FilteringKind.VISIBLE_CLASSES, + "Default all under imports in $debugName (visible classes)" + ) + } scope = LazyImportScope( scope, allUnderImportResolver, null, LazyImportScope.FilteringKind.VISIBLE_CLASSES, "All under imports in $debugName (visible classes)" ) - scope = LazyImportScope( - scope, defaultExplicitImportResolver, null, LazyImportScope.FilteringKind.ALL, - "Default explicit imports in $debugName" - ) + if (createDefaultImportingScopes) { + scope = LazyImportScope( + scope, defaultExplicitImportResolver, null, LazyImportScope.FilteringKind.ALL, + "Default explicit imports in $debugName" + ) + } scope = SubpackagesImportingScope(scope, components.moduleDescriptor, FqName.ROOT)