From 74f4a1357fdd5c435ecc373372d93c68a8c3c8d9 Mon Sep 17 00:00:00 2001 From: Andrey Uskov Date: Mon, 7 Oct 2019 15:32:18 +0300 Subject: [PATCH] Do not create deep copy for MPP project is model is not a proxy --- .../KotlinMPPGradleProjectResolver.kt | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt index 75defe78554..989fde52eb1 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt @@ -956,14 +956,21 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() { } } -fun ProjectResolverContext.getMppModel(gradleModule: IdeaModule): KotlinMPPGradleModel? = - this.getExtraProject(gradleModule, KotlinMPPGradleModel::class.java) - ?.let { kotlinMppModel -> - KotlinMPPGradleProjectResolver.proxyObjectCloningCache[kotlinMppModel] as? KotlinMPPGradleModelImpl ?: KotlinMPPGradleModelImpl( - kotlinMppModel, - KotlinMPPGradleProjectResolver.proxyObjectCloningCache - ).also { - KotlinMPPGradleProjectResolver.proxyObjectCloningCache[kotlinMppModel] = it +fun ProjectResolverContext.getMppModel(gradleModule: IdeaModule): KotlinMPPGradleModel? { + val mppModel = this.getExtraProject(gradleModule, KotlinMPPGradleModel::class.java) + return if (mppModel is Proxy) { + this.getExtraProject(gradleModule, KotlinMPPGradleModel::class.java) + ?.let { kotlinMppModel -> + KotlinMPPGradleProjectResolver.proxyObjectCloningCache[kotlinMppModel] as? KotlinMPPGradleModelImpl + ?: KotlinMPPGradleModelImpl( + kotlinMppModel, + KotlinMPPGradleProjectResolver.proxyObjectCloningCache + ).also { + KotlinMPPGradleProjectResolver.proxyObjectCloningCache[kotlinMppModel] = it + } } - } + } else { + mppModel + } +}