Do not cache AndroidModule in IDEAndroidLayoutXmlManager
This commit is contained in:
+16
-6
@@ -33,16 +33,26 @@ import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
|||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
|
||||||
|
|
||||||
public class IDEAndroidLayoutXmlFileManager(val module: Module) : AndroidLayoutXmlFileManager(module.project) {
|
public class IDEAndroidLayoutXmlFileManager(val module: Module) : AndroidLayoutXmlFileManager(module.project) {
|
||||||
override val androidModule: AndroidModule? by lazy { module.androidFacet?.toAndroidModuleInfo() }
|
override val androidModule: AndroidModule?
|
||||||
|
get() = module.androidFacet?.toAndroidModuleInfo()
|
||||||
|
|
||||||
private val moduleData: CachedValue<AndroidModuleData> by lazy {
|
@Volatile
|
||||||
cachedValue(project) {
|
private var _moduleData: CachedValue<AndroidModuleData>? = null
|
||||||
CachedValueProvider.Result.create(super.getModuleData(), getPsiTreeChangePreprocessor())
|
|
||||||
|
override fun getModuleData(): AndroidModuleData {
|
||||||
|
if (androidModule == null) {
|
||||||
|
_moduleData = null
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
if (_moduleData == null) {
|
||||||
|
_moduleData = cachedValue(project) {
|
||||||
|
CachedValueProvider.Result.create(super.getModuleData(), getPsiTreeChangePreprocessor())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _moduleData?.value ?: AndroidModuleData.EMPTY
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getModuleData() = moduleData.value
|
|
||||||
|
|
||||||
private fun getPsiTreeChangePreprocessor(): PsiTreeChangePreprocessor {
|
private fun getPsiTreeChangePreprocessor(): PsiTreeChangePreprocessor {
|
||||||
return project.getExtensions(PsiTreeChangePreprocessor.EP_NAME).first { it is AndroidPsiTreeChangePreprocessor }
|
return project.getExtensions(PsiTreeChangePreprocessor.EP_NAME).first { it is AndroidPsiTreeChangePreprocessor }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user