MPP: Configure Kotlin facets for Android modules

#KT-26770 Fixed
This commit is contained in:
Alexey Sedunov
2018-09-12 18:15:17 +03:00
parent 9253f88220
commit 1de0dbd67d
6 changed files with 71 additions and 59 deletions
@@ -23,6 +23,7 @@ import org.jetbrains.jps.model.java.JavaSourceRootType
import org.jetbrains.jps.model.module.JpsModuleSourceRootType import org.jetbrains.jps.model.module.JpsModuleSourceRootType
import org.jetbrains.kotlin.gradle.KotlinCompilation import org.jetbrains.kotlin.gradle.KotlinCompilation
import org.jetbrains.kotlin.gradle.KotlinPlatform import org.jetbrains.kotlin.gradle.KotlinPlatform
import org.jetbrains.kotlin.idea.configuration.KotlinSourceSetDataService
import java.io.File import java.io.File
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() { class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
@@ -58,6 +59,7 @@ class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<Modul
rootModel.addModuleOrderEntry(sourceSetModule) rootModel.addModuleOrderEntry(sourceSetModule)
} }
} }
KotlinSourceSetDataService.configureFacet(moduleData, sourceSetInfo, nodeToImport, module, modelsProvider)
} }
} }
@@ -21,6 +21,7 @@ import org.jetbrains.jps.model.java.JavaSourceRootType
import org.jetbrains.jps.model.module.JpsModuleSourceRootType import org.jetbrains.jps.model.module.JpsModuleSourceRootType
import org.jetbrains.kotlin.gradle.KotlinCompilation import org.jetbrains.kotlin.gradle.KotlinCompilation
import org.jetbrains.kotlin.gradle.KotlinPlatform import org.jetbrains.kotlin.gradle.KotlinPlatform
import org.jetbrains.kotlin.idea.configuration.KotlinSourceSetDataService
import java.io.File import java.io.File
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() { class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
@@ -56,6 +57,7 @@ class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<Modul
rootModel.addModuleOrderEntry(sourceSetModule) rootModel.addModuleOrderEntry(sourceSetModule)
} }
} }
KotlinSourceSetDataService.configureFacet(moduleData, sourceSetInfo, nodeToImport, module, modelsProvider)
} }
} }
@@ -23,6 +23,7 @@ import org.jetbrains.jps.model.java.JavaSourceRootType
import org.jetbrains.jps.model.module.JpsModuleSourceRootType import org.jetbrains.jps.model.module.JpsModuleSourceRootType
import org.jetbrains.kotlin.gradle.KotlinCompilation import org.jetbrains.kotlin.gradle.KotlinCompilation
import org.jetbrains.kotlin.gradle.KotlinPlatform import org.jetbrains.kotlin.gradle.KotlinPlatform
import org.jetbrains.kotlin.idea.configuration.KotlinSourceSetDataService
import java.io.File import java.io.File
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() { class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
@@ -58,6 +59,7 @@ class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<Modul
rootModel.addModuleOrderEntry(sourceSetModule) rootModel.addModuleOrderEntry(sourceSetModule)
} }
} }
KotlinSourceSetDataService.configureFacet(moduleData, sourceSetInfo, nodeToImport, module, modelsProvider)
} }
} }
@@ -26,6 +26,7 @@ import org.jetbrains.jps.model.module.JpsModuleSourceRootType
import org.jetbrains.kotlin.gradle.KotlinCompilation import org.jetbrains.kotlin.gradle.KotlinCompilation
import org.jetbrains.kotlin.gradle.KotlinPlatform import org.jetbrains.kotlin.gradle.KotlinPlatform
import org.jetbrains.kotlin.idea.configuration.kotlinSourceSet import org.jetbrains.kotlin.idea.configuration.kotlinSourceSet
import org.jetbrains.kotlin.idea.configuration.KotlinSourceSetDataService
import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData
import java.io.File import java.io.File
@@ -71,6 +72,7 @@ class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<Modul
rootModel.addModuleOrderEntry(sourceSetModule) rootModel.addModuleOrderEntry(sourceSetModule)
} }
} }
KotlinSourceSetDataService.configureFacet(moduleData, sourceSetInfo, nodeToImport, module, modelsProvider)
} }
ContentRootDataService().importData(contentRootsToImport, projectData, project, modelsProvider) ContentRootDataService().importData(contentRootsToImport, projectData, project, modelsProvider)
@@ -23,6 +23,7 @@ import org.jetbrains.jps.model.java.JavaSourceRootType
import org.jetbrains.jps.model.module.JpsModuleSourceRootType import org.jetbrains.jps.model.module.JpsModuleSourceRootType
import org.jetbrains.kotlin.gradle.KotlinCompilation import org.jetbrains.kotlin.gradle.KotlinCompilation
import org.jetbrains.kotlin.gradle.KotlinPlatform import org.jetbrains.kotlin.gradle.KotlinPlatform
import org.jetbrains.kotlin.idea.configuration.KotlinSourceSetDataService
import java.io.File import java.io.File
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() { class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
@@ -58,6 +59,7 @@ class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<Modul
rootModel.addModuleOrderEntry(sourceSetModule) rootModel.addModuleOrderEntry(sourceSetModule)
} }
} }
KotlinSourceSetDataService.configureFacet(moduleData, sourceSetInfo, nodeToImport, module, modelsProvider)
} }
} }
@@ -62,6 +62,7 @@ class KotlinSourceSetDataService : AbstractProjectDataService<GradleSourceSetDat
} }
} }
companion object {
private val KotlinModule.kind private val KotlinModule.kind
get() = when (this) { get() = when (this) {
is KotlinCompilation -> KotlinModuleKind.COMPILATION_AND_SOURCE_SET_HOLDER is KotlinCompilation -> KotlinModuleKind.COMPILATION_AND_SOURCE_SET_HOLDER
@@ -69,8 +70,8 @@ class KotlinSourceSetDataService : AbstractProjectDataService<GradleSourceSetDat
else -> KotlinModuleKind.DEFAULT else -> KotlinModuleKind.DEFAULT
} }
private fun configureFacet( fun configureFacet(
sourceSetData: GradleSourceSetData, moduleData: ModuleData,
kotlinSourceSet: KotlinSourceSetInfo, kotlinSourceSet: KotlinSourceSetInfo,
mainModuleNode: DataNode<ModuleData>, mainModuleNode: DataNode<ModuleData>,
ideModule: Module, ideModule: Module,
@@ -85,7 +86,7 @@ class KotlinSourceSetDataService : AbstractProjectDataService<GradleSourceSetDat
val platformKind = IdePlatformKindTooling.getTooling(kotlinSourceSet.platform).kind val platformKind = IdePlatformKindTooling.getTooling(kotlinSourceSet.platform).kind
val platform = when (platformKind) { val platform = when (platformKind) {
is JvmIdePlatformKind -> { is JvmIdePlatformKind -> {
val target = JvmTarget.fromString(sourceSetData.targetCompatibility ?: "") ?: JvmTarget.DEFAULT val target = JvmTarget.fromString(moduleData.targetCompatibility ?: "") ?: JvmTarget.DEFAULT
JvmIdePlatformKind.Platform(target) JvmIdePlatformKind.Platform(target)
} }
else -> platformKind.defaultPlatform else -> platformKind.defaultPlatform
@@ -134,3 +135,4 @@ class KotlinSourceSetDataService : AbstractProjectDataService<GradleSourceSetDat
} }
} }
} }
}