From ca2367f2b53dd1bf9cf8bd4aeedf47d6580b6251 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Mon, 15 Oct 2018 14:29:11 +0300 Subject: [PATCH] MPP: Rewrite ImportedModule name instead of wrapping it Otherwise this instance is not deserialized properly breaking import on opening project in AS #KT-27485 Fixed #KT-27473 Fixed --- .../KotlinAndroidMPPGradleProjectResolver.kt | 11 ++++++++--- .../KotlinAndroidMPPGradleProjectResolver.kt.173 | 11 ++++++++--- .../KotlinAndroidMPPGradleProjectResolver.kt.as31 | 11 ++++++++--- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidMPPGradleProjectResolver.kt b/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidMPPGradleProjectResolver.kt index d772cb73f90..bd2c6f526ba 100644 --- a/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidMPPGradleProjectResolver.kt +++ b/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidMPPGradleProjectResolver.kt @@ -55,9 +55,8 @@ class KotlinAndroidMPPGradleProjectResolver : AbstractProjectResolverExtension() for (childNode in ExternalSystemApiUtil.getChildren(ideModule, GradleSourceSetData.KEY)) { if (childNode.kotlinSourceSet == null) continue val moduleName = childNode.data.internalName - val importedModule = object : ImportedModule(gradleModule) { - override fun getName() = moduleName - } + val importedModule = ImportedModule(gradleModule) + importedModuleNameField.set(importedModule, moduleName) ideModule.createChild(IMPORTED_MODULE, importedModule) } } @@ -90,4 +89,10 @@ class KotlinAndroidMPPGradleProjectResolver : AbstractProjectResolverExtension() .toList() mainModuleData.createChild(KotlinAndroidSourceSetData.KEY, KotlinAndroidSourceSetData(androidSourceSets)) } + + companion object { + val importedModuleNameField by lazy { + ImportedModule::class.java.getDeclaredField("myName").apply { isAccessible = true } + } + } } \ No newline at end of file diff --git a/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidMPPGradleProjectResolver.kt.173 b/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidMPPGradleProjectResolver.kt.173 index 6e7889de743..a41ec2304c7 100644 --- a/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidMPPGradleProjectResolver.kt.173 +++ b/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidMPPGradleProjectResolver.kt.173 @@ -55,9 +55,8 @@ class KotlinAndroidMPPGradleProjectResolver : AbstractProjectResolverExtension() for (childNode in ExternalSystemApiUtil.getChildren(ideModule, GradleSourceSetData.KEY)) { if (childNode.kotlinSourceSet == null) continue val moduleName = childNode.data.internalName - val importedModule = object : ImportedModule(gradleModule) { - override fun getName() = moduleName - } + val importedModule = ImportedModule(gradleModule) + importedModuleNameField.set(importedModule, moduleName) ideModule.createChild(IMPORTED_MODULE, importedModule) } } @@ -90,4 +89,10 @@ class KotlinAndroidMPPGradleProjectResolver : AbstractProjectResolverExtension() .toList() mainModuleData.createChild(KotlinAndroidSourceSetData.KEY, KotlinAndroidSourceSetData(androidSourceSets)) } + + companion object { + val importedModuleNameField by lazy { + ImportedModule::class.java.getDeclaredField("myName").apply { isAccessible = true } + } + } } \ No newline at end of file diff --git a/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidMPPGradleProjectResolver.kt.as31 b/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidMPPGradleProjectResolver.kt.as31 index d772cb73f90..bd2c6f526ba 100644 --- a/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidMPPGradleProjectResolver.kt.as31 +++ b/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidMPPGradleProjectResolver.kt.as31 @@ -55,9 +55,8 @@ class KotlinAndroidMPPGradleProjectResolver : AbstractProjectResolverExtension() for (childNode in ExternalSystemApiUtil.getChildren(ideModule, GradleSourceSetData.KEY)) { if (childNode.kotlinSourceSet == null) continue val moduleName = childNode.data.internalName - val importedModule = object : ImportedModule(gradleModule) { - override fun getName() = moduleName - } + val importedModule = ImportedModule(gradleModule) + importedModuleNameField.set(importedModule, moduleName) ideModule.createChild(IMPORTED_MODULE, importedModule) } } @@ -90,4 +89,10 @@ class KotlinAndroidMPPGradleProjectResolver : AbstractProjectResolverExtension() .toList() mainModuleData.createChild(KotlinAndroidSourceSetData.KEY, KotlinAndroidSourceSetData(androidSourceSets)) } + + companion object { + val importedModuleNameField by lazy { + ImportedModule::class.java.getDeclaredField("myName").apply { isAccessible = true } + } + } } \ No newline at end of file