diff --git a/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidGradleMPPModuleDataService.kt b/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidGradleMPPModuleDataService.kt index cc8cb73c64c..a5684b77d25 100644 --- a/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidGradleMPPModuleDataService.kt +++ b/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidGradleMPPModuleDataService.kt @@ -22,6 +22,7 @@ import org.jetbrains.jps.model.java.JavaResourceRootType import org.jetbrains.jps.model.java.JavaSourceRootType import org.jetbrains.jps.model.module.JpsModuleSourceRootType import org.jetbrains.kotlin.gradle.KotlinCompilation +import org.jetbrains.kotlin.gradle.KotlinPlatform import java.io.File class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService() { @@ -43,7 +44,7 @@ class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService() { @@ -41,7 +42,7 @@ class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService() { @@ -43,7 +44,7 @@ class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService() { @@ -43,7 +44,7 @@ class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService() { @@ -43,7 +44,7 @@ class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService>() for (target in mppModel.targets) { - if (target.isAndroid) continue + if (target.platform == KotlinPlatform.ANDROID) continue val targetData = KotlinTargetData(target.name).also { it.archiveFile = target.jar?.archiveFile } @@ -210,7 +210,7 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() { val kotlinSourceSet = createSourceSetInfo(compilation, gradleModule, resolverCtx) - if (compilation.platform == KotlinPlatform.JVM) { + if (compilation.platform == KotlinPlatform.JVM || compilation.platform == KotlinPlatform.ANDROID) { compilationData.targetCompatibility = (kotlinSourceSet.compilerArguments as? K2JVMCompilerArguments)?.jvmTarget } @@ -232,7 +232,7 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() { } for (sourceSet in mppModel.sourceSets.values) { - if (sourceSet.isAndroid) continue + if (sourceSet.platform == KotlinPlatform.ANDROID) continue val moduleId = getKotlinModuleId(gradleModule, sourceSet, resolverCtx) val existingSourceSetDataNode = sourceSetMap[moduleId]?.first if (existingSourceSetDataNode?.kotlinSourceSet != null) continue @@ -455,7 +455,7 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() { } } for (sourceSet in mppModel.sourceSets.values) { - if (sourceSet.isAndroid) continue + if (sourceSet.platform == KotlinPlatform.ANDROID) continue val moduleId = getKotlinModuleId(gradleModule, sourceSet, resolverCtx) val moduleDataNode = sourceSetsMap[moduleId] ?: continue processor(moduleDataNode, sourceSet) @@ -476,7 +476,7 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() { } } for (target in mppModel.targets) { - if (target.isAndroid) continue + if (target.platform == KotlinPlatform.ANDROID) continue for (compilation in target.compilations) { val moduleId = getKotlinModuleId(gradleModule, compilation, resolverCtx) val moduleDataNode = sourceSetsMap[moduleId] ?: continue @@ -610,7 +610,7 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() { private fun createCompilerArguments(args: List, platform: KotlinPlatform): CommonCompilerArguments { return when (platform) { KotlinPlatform.COMMON -> K2MetadataCompilerArguments() - KotlinPlatform.JVM -> K2JVMCompilerArguments() + KotlinPlatform.JVM, KotlinPlatform.ANDROID -> K2JVMCompilerArguments() KotlinPlatform.JS -> K2JSCompilerArguments() }.also { parseCommandLineArguments(args, it) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinSourceSetDataService.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinSourceSetDataService.kt index 69af8bcb4b8..5c04e3a7cfd 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinSourceSetDataService.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinSourceSetDataService.kt @@ -53,7 +53,7 @@ class KotlinSourceSetDataService : AbstractProjectDataService TargetPlatformKind.Jvm[JvmTarget.fromString( + KotlinPlatform.JVM, KotlinPlatform.ANDROID -> TargetPlatformKind.Jvm[JvmTarget.fromString( sourceSetData.targetCompatibility ?: "" ) ?: JvmTarget.DEFAULT] KotlinPlatform.JS -> TargetPlatformKind.JavaScript diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModel.kt b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModel.kt index bb735e4a24a..881fae782d9 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModel.kt +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModel.kt @@ -12,7 +12,6 @@ import java.io.Serializable typealias KotlinDependency = ExternalDependency interface KotlinModule : Serializable { - val isAndroid: Boolean val name: String val platform: KotlinPlatform val dependencies: Set @@ -52,7 +51,8 @@ interface KotlinCompilation : KotlinModule { enum class KotlinPlatform(val id: String) { COMMON("common"), JVM("jvm"), - JS("js"); + JS("js"), + ANDROID("androidJvm"); companion object { fun byId(id: String) = values().firstOrNull { it.id == id } @@ -64,7 +64,6 @@ interface KotlinTargetJar : Serializable { } interface KotlinTarget : Serializable { - val isAndroid: Boolean val name: String val disambiguationClassifier: String? val platform: KotlinPlatform diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt index 949b97f7885..4565b8ba6df 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt @@ -144,13 +144,12 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { val platformId = (getPlatformType.invoke(gradleTarget) as? Named)?.name ?: return null val platform = KotlinPlatform.byId(platformId) ?: return null val disambiguationClassifier = getDisambiguationClassifier(gradleTarget) as? String - val isAndroid = targetClass.name == KOTLIN_ANDROID_TARGET_CLASS_NAME @Suppress("UNCHECKED_CAST") val gradleCompilations = (getCompilations.invoke(gradleTarget) as? NamedDomainObjectContainer)?.asMap?.values ?: emptyList() - val compilations = gradleCompilations.mapNotNull { buildCompilation(it, sourceSetMap, dependencyResolver, isAndroid, project) } + val compilations = gradleCompilations.mapNotNull { buildCompilation(it, sourceSetMap, dependencyResolver, project) } val jar = buildTargetJar(gradleTarget, project) - val target = KotlinTargetImpl(isAndroid, gradleTarget.name, disambiguationClassifier, platform, compilations, jar) + val target = KotlinTargetImpl(gradleTarget.name, disambiguationClassifier, platform, compilations, jar) compilations.forEach { it.target = target } return target } @@ -170,7 +169,6 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { gradleCompilation: Named, sourceSetMap: Map, dependencyResolver: DependencyResolver, - isAndroid: Boolean, project: Project ): KotlinCompilationImpl? { val compilationClass = gradleCompilation.javaClass @@ -186,7 +184,7 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { val arguments = buildCompilationArguments(compileKotlinTask) ?: return null val dependencyClasspath = buildDependencyClasspath(compileKotlinTask) val dependencies = buildCompilationDependencies(gradleCompilation, dependencyResolver, project) - return KotlinCompilationImpl(isAndroid, gradleCompilation.name, kotlinSourceSets, dependencies, output, arguments, dependencyClasspath) + return KotlinCompilationImpl(gradleCompilation.name, kotlinSourceSets, dependencies, output, arguments, dependencyClasspath) } private fun buildCompilationDependencies( @@ -280,15 +278,10 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { if (compilations != null) { sourceSet.platform = compilations.map { it.platform }.distinct().singleOrNull() ?: KotlinPlatform.COMMON sourceSet.isTestModule = compilations.all { it.isTestModule } - sourceSet.isAndroid = compilations.all { it.isAndroid } } else { // TODO: change me after design about it sourceSet.isTestModule = "Test" in sourceSet.name } } } - - companion object { - private val KOTLIN_ANDROID_TARGET_CLASS_NAME = "org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget" - } } \ No newline at end of file diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.181 b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.181 index 2f2e88efbda..08eba876333 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.181 +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt.181 @@ -144,13 +144,12 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { val platformId = (getPlatformType.invoke(gradleTarget) as? Named)?.name ?: return null val platform = KotlinPlatform.byId(platformId) ?: return null val disambiguationClassifier = getDisambiguationClassifier(gradleTarget) as? String - val isAndroid = targetClass.name == KOTLIN_ANDROID_TARGET_CLASS_NAME @Suppress("UNCHECKED_CAST") val gradleCompilations = (getCompilations.invoke(gradleTarget) as? NamedDomainObjectContainer)?.asMap?.values ?: emptyList() - val compilations = gradleCompilations.mapNotNull { buildCompilation(it, sourceSetMap, dependencyResolver, isAndroid, project) } + val compilations = gradleCompilations.mapNotNull { buildCompilation(it, sourceSetMap, dependencyResolver, project) } val jar = buildTargetJar(gradleTarget, project) - val target = KotlinTargetImpl(isAndroid, gradleTarget.name, disambiguationClassifier, platform, compilations, jar) + val target = KotlinTargetImpl(gradleTarget.name, disambiguationClassifier, platform, compilations, jar) compilations.forEach { it.target = target } return target } @@ -170,7 +169,6 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { gradleCompilation: Named, sourceSetMap: Map, dependencyResolver: DependencyResolver, - isAndroid: Boolean, project: Project ): KotlinCompilationImpl? { val compilationClass = gradleCompilation.javaClass @@ -186,7 +184,7 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { val arguments = buildCompilationArguments(compileKotlinTask) ?: return null val dependencyClasspath = buildDependencyClasspath(compileKotlinTask) val dependencies = buildCompilationDependencies(gradleCompilation, dependencyResolver, project) - return KotlinCompilationImpl(isAndroid, gradleCompilation.name, kotlinSourceSets, dependencies, output, arguments, dependencyClasspath) + return KotlinCompilationImpl(gradleCompilation.name, kotlinSourceSets, dependencies, output, arguments, dependencyClasspath) } private fun buildCompilationDependencies( @@ -280,15 +278,10 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { if (compilations != null) { sourceSet.platform = compilations.map { it.platform }.distinct().singleOrNull() ?: KotlinPlatform.COMMON sourceSet.isTestModule = compilations.all { it.isTestModule } - sourceSet.isAndroid = compilations.all { it.isAndroid } } else { // TODO: change me after design about it sourceSet.isTestModule = "Test" in sourceSet.name } } } - - companion object { - private val KOTLIN_ANDROID_TARGET_CLASS_NAME = "org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget" - } } \ No newline at end of file diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelImpl.kt b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelImpl.kt index 1c41d574cf2..3a551708b86 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelImpl.kt +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelImpl.kt @@ -14,9 +14,6 @@ class KotlinSourceSetImpl( override val dependencies: Set, override val dependsOnSourceSets: Set ) : KotlinSourceSet { - override var isAndroid: Boolean = false - internal set - override var platform: KotlinPlatform = KotlinPlatform.COMMON internal set @@ -38,7 +35,6 @@ class KotlinCompilationArgumentsImpl( ) : KotlinCompilationArguments class KotlinCompilationImpl( - override val isAndroid: Boolean, override val name: String, override val sourceSets: Collection, override val dependencies: Set, @@ -63,7 +59,6 @@ class KotlinTargetJarImpl( ) : KotlinTargetJar class KotlinTargetImpl( - override val isAndroid: Boolean, override val name: String, override val disambiguationClassifier: String?, override val platform: KotlinPlatform,