Memoize package views in module
This commit is contained in:
@@ -489,9 +489,8 @@ class QualifiedExpressionResolver(val symbolUsageValidator: SymbolUsageValidator
|
||||
position: QualifierPosition
|
||||
): Pair<PackageViewDescriptor, Int> {
|
||||
val possiblePackagePrefixSize = path.indexOfFirst { it.typeArguments != null }.let { if (it == -1) path.size else it + 1 }
|
||||
var fqName = path.subList(0, possiblePackagePrefixSize).fold(FqName.ROOT) { fqName, qualifierPart ->
|
||||
fqName.child(qualifierPart.name)
|
||||
}
|
||||
var fqName = FqName.fromSegments(path.subList(0, possiblePackagePrefixSize).map { it.name.asString() })
|
||||
|
||||
var prefixSize = possiblePackagePrefixSize
|
||||
while (!fqName.isRoot) {
|
||||
val packageDescriptor = getPackage(fqName)
|
||||
|
||||
@@ -44,7 +44,11 @@ class ModuleDescriptorImpl @JvmOverloads constructor(
|
||||
private var dependencies: ModuleDependencies? = null
|
||||
private var packageFragmentProviderForModuleContent: PackageFragmentProvider? = null
|
||||
|
||||
override fun getPackage(fqName: FqName): PackageViewDescriptor = LazyPackageViewDescriptorImpl(this, fqName, storageManager)
|
||||
private val packages = storageManager.createMemoizedFunction<FqName, PackageViewDescriptor> {
|
||||
fqName: FqName -> LazyPackageViewDescriptorImpl(this, fqName, storageManager)
|
||||
}
|
||||
|
||||
override fun getPackage(fqName: FqName): PackageViewDescriptor = packages(fqName)
|
||||
|
||||
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> {
|
||||
return packageFragmentProvider.getSubPackagesOf(fqName, nameFilter)
|
||||
|
||||
Reference in New Issue
Block a user