Protect resolverByModuleDescriptor collection with storageManager lock

Read access from isResolverFromModuleDescriptorComputed was exposed through
DelegatingPackageFragmentProvider.
This commit is contained in:
Nikolay Krasko
2018-03-14 19:01:45 +03:00
parent 9145470f79
commit 03459eb808
@@ -140,6 +140,7 @@ class ResolverForProjectImpl<M : ModuleInfo>(
)
}
// Protected by ("projectContext.storageManager.lock")
private val resolverByModuleDescriptor = mutableMapOf<ModuleDescriptor, ResolverForModule>()
override val allModules: Collection<M> by lazy {
@@ -174,7 +175,9 @@ class ResolverForProjectImpl<M : ModuleInfo>(
}
internal fun isResolverForModuleDescriptorComputed(descriptor: ModuleDescriptor) =
descriptor in resolverByModuleDescriptor
projectContext.storageManager.compute {
descriptor in resolverByModuleDescriptor
}
override fun descriptorForModule(moduleInfo: M): ModuleDescriptorImpl {
if (!isCorrectModuleInfo(moduleInfo)) {