Android Extensions: do not cache package fragment provider with synthetic properties (KT-10318)

This commit is contained in:
Yan Zhulanow
2015-12-09 21:21:09 +03:00
parent ac9a1350c2
commit 15faa6610c
@@ -27,13 +27,10 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.BindingTrace
import org.jetbrains.kotlin.resolve.jvm.extensions.PackageFragmentProviderExtension
import org.jetbrains.kotlin.storage.StorageManager
import java.util.*
abstract class AndroidPackageFragmentProviderExtension : PackageFragmentProviderExtension {
protected abstract fun getLayoutXmlFileManager(project: Project, moduleInfo: ModuleInfo?): AndroidLayoutXmlFileManager?
private val cache = WeakHashMap<AndroidModuleData, AndroidSyntheticPackageFragmentProvider>()
override fun getPackageFragmentProvider(
project: Project,
module: ModuleDescriptor,
@@ -45,9 +42,6 @@ abstract class AndroidPackageFragmentProviderExtension : PackageFragmentProvider
val moduleData = layoutXmlFileManager.getModuleData()
val cachedPackageFragmentProvider = cache[moduleData]
if (cachedPackageFragmentProvider != null) return cachedPackageFragmentProvider
val lazyContext = LazySyntheticElementResolveContext(module, storageManager)
val allPackageDescriptors = arrayListOf<PackageFragmentDescriptor>()
@@ -97,9 +91,7 @@ abstract class AndroidPackageFragmentProviderExtension : PackageFragmentProvider
allPackageDescriptors += packageDescriptor
}
val provider = AndroidSyntheticPackageFragmentProvider(allPackageDescriptors)
cache[moduleData] = provider
return provider
return AndroidSyntheticPackageFragmentProvider(allPackageDescriptors)
}
}