Allow not to create default importing scopes
This commit is contained in:
committed by
Ilya Chernikov
parent
53b31a20ca
commit
c3cbfe34c4
@@ -58,11 +58,11 @@ class FileScopeFactory(
|
|||||||
override val importedFqName: FqName? get() = importPath.fqName
|
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 packageView = components.moduleDescriptor.getPackage(file.packageFqName)
|
||||||
val packageFragment = topLevelDescriptorProvider.getPackageFragmentOrDiagnoseFailure(file.packageFqName, file)
|
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(
|
private data class DefaultImportResolvers(
|
||||||
@@ -137,7 +137,8 @@ class FileScopeFactory(
|
|||||||
private val file: KtFile,
|
private val file: KtFile,
|
||||||
private val existingImports: ImportingScope?,
|
private val existingImports: ImportingScope?,
|
||||||
private val packageFragment: PackageFragmentDescriptor,
|
private val packageFragment: PackageFragmentDescriptor,
|
||||||
private val packageView: PackageViewDescriptor
|
private val packageView: PackageViewDescriptor,
|
||||||
|
private val createDefaultImportingScopes: Boolean,
|
||||||
) {
|
) {
|
||||||
val imports = file.importDirectives
|
val imports = file.importDirectives
|
||||||
val aliasImportNames = imports.mapNotNull { if (it.aliasName != null) it.importedFqName else null }
|
val aliasImportNames = imports.mapNotNull { if (it.aliasName != null) it.importedFqName else null }
|
||||||
@@ -197,15 +198,17 @@ class FileScopeFactory(
|
|||||||
|
|
||||||
val dummyContainerDescriptor = DummyContainerDescriptor(file, packageFragment)
|
val dummyContainerDescriptor = DummyContainerDescriptor(file, packageFragment)
|
||||||
|
|
||||||
var scope: ImportingScope
|
var scope: ImportingScope? = existingImports
|
||||||
|
|
||||||
val debugName = "LazyFileScope for file " + file.name
|
val debugName = "LazyFileScope for file " + file.name
|
||||||
|
|
||||||
scope = LazyImportScope(
|
if (createDefaultImportingScopes) {
|
||||||
existingImports, defaultAllUnderImportResolver, defaultLowPriorityImportResolver,
|
scope = LazyImportScope(
|
||||||
LazyImportScope.FilteringKind.INVISIBLE_CLASSES,
|
scope, defaultAllUnderImportResolver, defaultLowPriorityImportResolver,
|
||||||
"Default all under imports in $debugName (invisible classes only)"
|
LazyImportScope.FilteringKind.INVISIBLE_CLASSES,
|
||||||
)
|
"Default all under imports in $debugName (invisible classes only)"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
scope = LazyImportScope(
|
scope = LazyImportScope(
|
||||||
scope, allUnderImportResolver, null, LazyImportScope.FilteringKind.INVISIBLE_CLASSES,
|
scope, allUnderImportResolver, null, LazyImportScope.FilteringKind.INVISIBLE_CLASSES,
|
||||||
@@ -214,20 +217,24 @@ class FileScopeFactory(
|
|||||||
|
|
||||||
scope = currentPackageScope(packageView, aliasImportNames, dummyContainerDescriptor, FilteringKind.INVISIBLE_CLASSES, scope)
|
scope = currentPackageScope(packageView, aliasImportNames, dummyContainerDescriptor, FilteringKind.INVISIBLE_CLASSES, scope)
|
||||||
|
|
||||||
scope = LazyImportScope(
|
if (createDefaultImportingScopes) {
|
||||||
scope, defaultAllUnderImportResolver, defaultLowPriorityImportResolver, LazyImportScope.FilteringKind.VISIBLE_CLASSES,
|
scope = LazyImportScope(
|
||||||
"Default all under imports in $debugName (visible classes)"
|
scope, defaultAllUnderImportResolver, defaultLowPriorityImportResolver, LazyImportScope.FilteringKind.VISIBLE_CLASSES,
|
||||||
)
|
"Default all under imports in $debugName (visible classes)"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
scope = LazyImportScope(
|
scope = LazyImportScope(
|
||||||
scope, allUnderImportResolver, null, LazyImportScope.FilteringKind.VISIBLE_CLASSES,
|
scope, allUnderImportResolver, null, LazyImportScope.FilteringKind.VISIBLE_CLASSES,
|
||||||
"All under imports in $debugName (visible classes)"
|
"All under imports in $debugName (visible classes)"
|
||||||
)
|
)
|
||||||
|
|
||||||
scope = LazyImportScope(
|
if (createDefaultImportingScopes) {
|
||||||
scope, defaultExplicitImportResolver, null, LazyImportScope.FilteringKind.ALL,
|
scope = LazyImportScope(
|
||||||
"Default explicit imports in $debugName"
|
scope, defaultExplicitImportResolver, null, LazyImportScope.FilteringKind.ALL,
|
||||||
)
|
"Default explicit imports in $debugName"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
scope = SubpackagesImportingScope(scope, components.moduleDescriptor, FqName.ROOT)
|
scope = SubpackagesImportingScope(scope, components.moduleDescriptor, FqName.ROOT)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user