MPP: Fix import of dependencies on Android modules
This commit is contained in:
+1
@@ -24,6 +24,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.KotlinSourceSetDataService
|
import org.jetbrains.kotlin.idea.configuration.KotlinSourceSetDataService
|
||||||
|
import org.jetbrains.kotlin.idea.configuration.kotlinAndroidSourceSets
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
|
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
|
||||||
|
|||||||
+1
@@ -22,6 +22,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.KotlinSourceSetDataService
|
import org.jetbrains.kotlin.idea.configuration.KotlinSourceSetDataService
|
||||||
|
import org.jetbrains.kotlin.idea.configuration.kotlinAndroidSourceSets
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
|
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
|
||||||
|
|||||||
+1
@@ -24,6 +24,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.KotlinSourceSetDataService
|
import org.jetbrains.kotlin.idea.configuration.KotlinSourceSetDataService
|
||||||
|
import org.jetbrains.kotlin.idea.configuration.kotlinAndroidSourceSets
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
|
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
|
||||||
|
|||||||
+1
@@ -27,6 +27,7 @@ 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.kotlin.idea.configuration.KotlinSourceSetDataService
|
||||||
|
import org.jetbrains.kotlin.idea.configuration.kotlinAndroidSourceSets
|
||||||
import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData
|
import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
|
|||||||
+1
@@ -24,6 +24,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.KotlinSourceSetDataService
|
import org.jetbrains.kotlin.idea.configuration.KotlinSourceSetDataService
|
||||||
|
import org.jetbrains.kotlin.idea.configuration.kotlinAndroidSourceSets
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
|
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
|
||||||
|
|||||||
+1
-6
@@ -15,21 +15,16 @@ import com.intellij.openapi.externalSystem.model.project.ProjectData
|
|||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemConstants
|
import com.intellij.openapi.externalSystem.util.ExternalSystemConstants
|
||||||
import com.intellij.openapi.externalSystem.util.Order
|
import com.intellij.openapi.externalSystem.util.Order
|
||||||
import com.intellij.openapi.util.Key
|
|
||||||
import org.gradle.tooling.model.idea.IdeaModule
|
import org.gradle.tooling.model.idea.IdeaModule
|
||||||
import org.jetbrains.kotlin.gradle.KotlinMPPGradleModel
|
import org.jetbrains.kotlin.gradle.KotlinMPPGradleModel
|
||||||
import org.jetbrains.kotlin.gradle.KotlinMPPGradleModelBuilder
|
import org.jetbrains.kotlin.gradle.KotlinMPPGradleModelBuilder
|
||||||
import org.jetbrains.kotlin.gradle.KotlinPlatform
|
import org.jetbrains.kotlin.gradle.KotlinPlatform
|
||||||
import org.jetbrains.kotlin.idea.configuration.KotlinMPPGradleProjectResolver
|
import org.jetbrains.kotlin.idea.configuration.KotlinMPPGradleProjectResolver
|
||||||
import org.jetbrains.kotlin.idea.configuration.KotlinSourceSetInfo
|
import org.jetbrains.kotlin.idea.configuration.kotlinAndroidSourceSets
|
||||||
import org.jetbrains.kotlin.idea.configuration.kotlinSourceSet
|
import org.jetbrains.kotlin.idea.configuration.kotlinSourceSet
|
||||||
import org.jetbrains.kotlin.idea.util.CopyableDataNodeUserDataProperty
|
|
||||||
import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData
|
import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData
|
||||||
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
|
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
|
||||||
|
|
||||||
var DataNode<ModuleData>.kotlinAndroidSourceSets: List<KotlinSourceSetInfo>?
|
|
||||||
by CopyableDataNodeUserDataProperty(Key.create("ANDROID_COMPILATIONS"))
|
|
||||||
|
|
||||||
@Order(ExternalSystemConstants.UNORDERED - 1)
|
@Order(ExternalSystemConstants.UNORDERED - 1)
|
||||||
class KotlinAndroidMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
class KotlinAndroidMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
||||||
private val isAndroidProject by lazy {
|
private val isAndroidProject by lazy {
|
||||||
|
|||||||
+1
-6
@@ -15,21 +15,16 @@ import com.intellij.openapi.externalSystem.model.project.ProjectData
|
|||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemConstants
|
import com.intellij.openapi.externalSystem.util.ExternalSystemConstants
|
||||||
import com.intellij.openapi.externalSystem.util.Order
|
import com.intellij.openapi.externalSystem.util.Order
|
||||||
import com.intellij.openapi.util.Key
|
|
||||||
import org.gradle.tooling.model.idea.IdeaModule
|
import org.gradle.tooling.model.idea.IdeaModule
|
||||||
import org.jetbrains.kotlin.gradle.KotlinMPPGradleModel
|
import org.jetbrains.kotlin.gradle.KotlinMPPGradleModel
|
||||||
import org.jetbrains.kotlin.gradle.KotlinMPPGradleModelBuilder
|
import org.jetbrains.kotlin.gradle.KotlinMPPGradleModelBuilder
|
||||||
import org.jetbrains.kotlin.gradle.KotlinPlatform
|
import org.jetbrains.kotlin.gradle.KotlinPlatform
|
||||||
import org.jetbrains.kotlin.idea.configuration.KotlinMPPGradleProjectResolver
|
import org.jetbrains.kotlin.idea.configuration.KotlinMPPGradleProjectResolver
|
||||||
import org.jetbrains.kotlin.idea.configuration.KotlinSourceSetInfo
|
import org.jetbrains.kotlin.idea.configuration.kotlinAndroidSourceSets
|
||||||
import org.jetbrains.kotlin.idea.configuration.kotlinSourceSet
|
import org.jetbrains.kotlin.idea.configuration.kotlinSourceSet
|
||||||
import org.jetbrains.kotlin.idea.util.CopyableDataNodeUserDataProperty
|
|
||||||
import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData
|
import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData
|
||||||
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
|
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
|
||||||
|
|
||||||
var DataNode<ModuleData>.kotlinAndroidSourceSets: List<KotlinSourceSetInfo>?
|
|
||||||
by CopyableDataNodeUserDataProperty(Key.create("ANDROID_COMPILATIONS"))
|
|
||||||
|
|
||||||
@Order(ExternalSystemConstants.UNORDERED - 1)
|
@Order(ExternalSystemConstants.UNORDERED - 1)
|
||||||
class KotlinAndroidMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
class KotlinAndroidMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
||||||
private val isAndroidProject by lazy {
|
private val isAndroidProject by lazy {
|
||||||
|
|||||||
+1
-6
@@ -15,21 +15,16 @@ import com.intellij.openapi.externalSystem.model.project.ProjectData
|
|||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemConstants
|
import com.intellij.openapi.externalSystem.util.ExternalSystemConstants
|
||||||
import com.intellij.openapi.externalSystem.util.Order
|
import com.intellij.openapi.externalSystem.util.Order
|
||||||
import com.intellij.openapi.util.Key
|
|
||||||
import org.gradle.tooling.model.idea.IdeaModule
|
import org.gradle.tooling.model.idea.IdeaModule
|
||||||
import org.jetbrains.kotlin.gradle.KotlinMPPGradleModel
|
import org.jetbrains.kotlin.gradle.KotlinMPPGradleModel
|
||||||
import org.jetbrains.kotlin.gradle.KotlinMPPGradleModelBuilder
|
import org.jetbrains.kotlin.gradle.KotlinMPPGradleModelBuilder
|
||||||
import org.jetbrains.kotlin.gradle.KotlinPlatform
|
import org.jetbrains.kotlin.gradle.KotlinPlatform
|
||||||
import org.jetbrains.kotlin.idea.configuration.KotlinMPPGradleProjectResolver
|
import org.jetbrains.kotlin.idea.configuration.KotlinMPPGradleProjectResolver
|
||||||
import org.jetbrains.kotlin.idea.configuration.KotlinSourceSetInfo
|
import org.jetbrains.kotlin.idea.configuration.kotlinAndroidSourceSets
|
||||||
import org.jetbrains.kotlin.idea.configuration.kotlinSourceSet
|
import org.jetbrains.kotlin.idea.configuration.kotlinSourceSet
|
||||||
import org.jetbrains.kotlin.idea.util.CopyableDataNodeUserDataProperty
|
|
||||||
import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData
|
import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData
|
||||||
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
|
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
|
||||||
|
|
||||||
var DataNode<ModuleData>.kotlinAndroidSourceSets: List<KotlinSourceSetInfo>?
|
|
||||||
by CopyableDataNodeUserDataProperty(Key.create("ANDROID_COMPILATIONS"))
|
|
||||||
|
|
||||||
@Order(ExternalSystemConstants.UNORDERED - 1)
|
@Order(ExternalSystemConstants.UNORDERED - 1)
|
||||||
class KotlinAndroidMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
class KotlinAndroidMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
||||||
private val isAndroidProject by lazy {
|
private val isAndroidProject by lazy {
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import com.intellij.openapi.util.Key
|
|||||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||||
import org.jetbrains.kotlin.gradle.KotlinModule
|
import org.jetbrains.kotlin.gradle.KotlinModule
|
||||||
import org.jetbrains.kotlin.gradle.KotlinPlatform
|
import org.jetbrains.kotlin.gradle.KotlinPlatform
|
||||||
import org.jetbrains.kotlin.gradle.KotlinSourceSet
|
|
||||||
import org.jetbrains.kotlin.idea.util.CopyableDataNodeUserDataProperty
|
import org.jetbrains.kotlin.idea.util.CopyableDataNodeUserDataProperty
|
||||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
import org.jetbrains.plugins.gradle.util.GradleConstants
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -25,6 +24,9 @@ var DataNode<out ModuleData>.kotlinSourceSet: KotlinSourceSetInfo?
|
|||||||
var DataNode<out ModuleData>.kotlinTargetDataNode: DataNode<KotlinTargetData>?
|
var DataNode<out ModuleData>.kotlinTargetDataNode: DataNode<KotlinTargetData>?
|
||||||
by CopyableDataNodeUserDataProperty(Key.create("KOTLIN_TARGET_DATA_NODE"))
|
by CopyableDataNodeUserDataProperty(Key.create("KOTLIN_TARGET_DATA_NODE"))
|
||||||
|
|
||||||
|
var DataNode<ModuleData>.kotlinAndroidSourceSets: List<KotlinSourceSetInfo>?
|
||||||
|
by CopyableDataNodeUserDataProperty(Key.create("ANDROID_COMPILATIONS"))
|
||||||
|
|
||||||
class KotlinSourceSetInfo(val kotlinModule: KotlinModule) {
|
class KotlinSourceSetInfo(val kotlinModule: KotlinModule) {
|
||||||
var moduleId: String? = null
|
var moduleId: String? = null
|
||||||
var platform: KotlinPlatform = KotlinPlatform.COMMON
|
var platform: KotlinPlatform = KotlinPlatform.COMMON
|
||||||
@@ -32,7 +34,7 @@ class KotlinSourceSetInfo(val kotlinModule: KotlinModule) {
|
|||||||
var compilerArguments: CommonCompilerArguments? = null
|
var compilerArguments: CommonCompilerArguments? = null
|
||||||
var dependencyClasspath: List<String> = emptyList()
|
var dependencyClasspath: List<String> = emptyList()
|
||||||
var isTestModule: Boolean = false
|
var isTestModule: Boolean = false
|
||||||
var sourceSetIdsByName: Map<String, String> = emptyMap()
|
var sourceSetIdsByName: MutableMap<String, String> = LinkedHashMap()
|
||||||
}
|
}
|
||||||
|
|
||||||
class KotlinTargetData(name: String) : AbstractNamedData(GradleConstants.SYSTEM_ID, name) {
|
class KotlinTargetData(name: String) : AbstractNamedData(GradleConstants.SYSTEM_ID, name) {
|
||||||
|
|||||||
+44
-21
@@ -299,6 +299,7 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
|||||||
) {
|
) {
|
||||||
val mppModel = resolverCtx.getExtraProject(gradleModule, KotlinMPPGradleModel::class.java) ?: return
|
val mppModel = resolverCtx.getExtraProject(gradleModule, KotlinMPPGradleModel::class.java) ?: return
|
||||||
processSourceSets(gradleModule, mppModel, ideModule, resolverCtx) { dataNode, sourceSet ->
|
processSourceSets(gradleModule, mppModel, ideModule, resolverCtx) { dataNode, sourceSet ->
|
||||||
|
if (dataNode == null || sourceSet.platform == KotlinPlatform.ANDROID) return@processSourceSets
|
||||||
createContentRootData(sourceSet.sourceDirs, sourceSet.sourceType, dataNode)
|
createContentRootData(sourceSet.sourceDirs, sourceSet.sourceType, dataNode)
|
||||||
createContentRootData(sourceSet.resourceDirs, sourceSet.resourceType, dataNode)
|
createContentRootData(sourceSet.resourceDirs, sourceSet.resourceType, dataNode)
|
||||||
}
|
}
|
||||||
@@ -346,7 +347,9 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
|||||||
val sourceSetGraph = GraphBuilder.directed().build<KotlinModule>()
|
val sourceSetGraph = GraphBuilder.directed().build<KotlinModule>()
|
||||||
processSourceSets(gradleModule, mppModel, ideModule, resolverCtx) { dataNode, sourceSet ->
|
processSourceSets(gradleModule, mppModel, ideModule, resolverCtx) { dataNode, sourceSet ->
|
||||||
sourceSetGraph.addNode(sourceSet)
|
sourceSetGraph.addNode(sourceSet)
|
||||||
val productionSourceSet = dataNode.data.productionModuleId
|
val productionSourceSet = dataNode
|
||||||
|
?.data
|
||||||
|
?.productionModuleId
|
||||||
?.let { ideModule.findChildModuleByInternalName(it) }
|
?.let { ideModule.findChildModuleByInternalName(it) }
|
||||||
?.kotlinSourceSet
|
?.kotlinSourceSet
|
||||||
?.kotlinModule
|
?.kotlinModule
|
||||||
@@ -361,21 +364,29 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
|||||||
}
|
}
|
||||||
val closedSourceSetGraph = Graphs.transitiveClosure(sourceSetGraph)
|
val closedSourceSetGraph = Graphs.transitiveClosure(sourceSetGraph)
|
||||||
for (sourceSet in closedSourceSetGraph.nodes()) {
|
for (sourceSet in closedSourceSetGraph.nodes()) {
|
||||||
val fromDataNode = getSiblingKotlinModuleData(sourceSet, gradleModule, ideModule, resolverCtx) ?: continue
|
val isAndroid = sourceSet.platform == KotlinPlatform.ANDROID
|
||||||
|
val fromDataNode = if (isAndroid) {
|
||||||
|
ideModule
|
||||||
|
} else {
|
||||||
|
getSiblingKotlinModuleData(sourceSet, gradleModule, ideModule, resolverCtx)
|
||||||
|
} ?: continue
|
||||||
val dependeeSourceSets = closedSourceSetGraph.successors(sourceSet)
|
val dependeeSourceSets = closedSourceSetGraph.successors(sourceSet)
|
||||||
|
val sourceSetInfo = if (isAndroid) {
|
||||||
|
ideModule.kotlinAndroidSourceSets?.firstOrNull {
|
||||||
|
(it.kotlinModule as? KotlinCompilation)?.sourceSets?.contains(sourceSet) ?: false
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fromDataNode.kotlinSourceSet
|
||||||
|
}
|
||||||
|
if (sourceSetInfo != null && sourceSetInfo.kotlinModule is KotlinCompilation) {
|
||||||
|
val selfName = sourceSetInfo.kotlinModule.fullName()
|
||||||
|
sourceSetInfo.addSourceSets(dependeeSourceSets, selfName, gradleModule, resolverCtx)
|
||||||
|
}
|
||||||
|
if (sourceSet.platform == KotlinPlatform.ANDROID) continue
|
||||||
for (dependeeSourceSet in dependeeSourceSets) {
|
for (dependeeSourceSet in dependeeSourceSets) {
|
||||||
val toDataNode = getSiblingKotlinModuleData(dependeeSourceSet, gradleModule, ideModule, resolverCtx) ?: continue
|
val toDataNode = getSiblingKotlinModuleData(dependeeSourceSet, gradleModule, ideModule, resolverCtx) ?: continue
|
||||||
addDependency(fromDataNode, toDataNode)
|
addDependency(fromDataNode, toDataNode)
|
||||||
}
|
}
|
||||||
val sourceSetInfo = fromDataNode.kotlinSourceSet
|
|
||||||
if (sourceSetInfo != null && sourceSetInfo.kotlinModule is KotlinCompilation) {
|
|
||||||
val selfName = sourceSetInfo.kotlinModule.fullName()
|
|
||||||
sourceSetInfo.sourceSetIdsByName = dependeeSourceSets
|
|
||||||
.asSequence()
|
|
||||||
.filter { it.fullName() != selfName }
|
|
||||||
.map { it.name to getKotlinModuleId(gradleModule, it, resolverCtx) }
|
|
||||||
.toMap()
|
|
||||||
}
|
|
||||||
if (processedModuleIds.add(getKotlinModuleId(gradleModule, sourceSet, resolverCtx))) {
|
if (processedModuleIds.add(getKotlinModuleId(gradleModule, sourceSet, resolverCtx))) {
|
||||||
val mergedDependencies = LinkedHashSet<KotlinDependency>().apply {
|
val mergedDependencies = LinkedHashSet<KotlinDependency>().apply {
|
||||||
addAll(sourceSet.dependencies)
|
addAll(sourceSet.dependencies)
|
||||||
@@ -477,7 +488,7 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
|||||||
mppModel: KotlinMPPGradleModel,
|
mppModel: KotlinMPPGradleModel,
|
||||||
ideModule: DataNode<ModuleData>,
|
ideModule: DataNode<ModuleData>,
|
||||||
resolverCtx: ProjectResolverContext,
|
resolverCtx: ProjectResolverContext,
|
||||||
processor: (DataNode<GradleSourceSetData>, KotlinSourceSet) -> Unit
|
processor: (DataNode<GradleSourceSetData>?, KotlinSourceSet) -> Unit
|
||||||
) {
|
) {
|
||||||
val sourceSetsMap = HashMap<String, DataNode<GradleSourceSetData>>()
|
val sourceSetsMap = HashMap<String, DataNode<GradleSourceSetData>>()
|
||||||
for (dataNode in ExternalSystemApiUtil.findAll(ideModule, GradleSourceSetData.KEY)) {
|
for (dataNode in ExternalSystemApiUtil.findAll(ideModule, GradleSourceSetData.KEY)) {
|
||||||
@@ -486,9 +497,8 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (sourceSet in mppModel.sourceSets.values) {
|
for (sourceSet in mppModel.sourceSets.values) {
|
||||||
if (sourceSet.platform == KotlinPlatform.ANDROID) continue
|
|
||||||
val moduleId = getKotlinModuleId(gradleModule, sourceSet, resolverCtx)
|
val moduleId = getKotlinModuleId(gradleModule, sourceSet, resolverCtx)
|
||||||
val moduleDataNode = sourceSetsMap[moduleId] ?: continue
|
val moduleDataNode = sourceSetsMap[moduleId]
|
||||||
processor(moduleDataNode, sourceSet)
|
processor(moduleDataNode, sourceSet)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -630,18 +640,31 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
|||||||
gradleModule: IdeaModule,
|
gradleModule: IdeaModule,
|
||||||
resolverCtx: ProjectResolverContext
|
resolverCtx: ProjectResolverContext
|
||||||
): KotlinSourceSetInfo {
|
): KotlinSourceSetInfo {
|
||||||
return KotlinSourceSetInfo(compilation).also {
|
return KotlinSourceSetInfo(compilation).also { sourceSetInfo ->
|
||||||
it.moduleId = getKotlinModuleId(gradleModule, compilation, resolverCtx)
|
sourceSetInfo.moduleId = getKotlinModuleId(gradleModule, compilation, resolverCtx)
|
||||||
it.platform = compilation.platform
|
sourceSetInfo.platform = compilation.platform
|
||||||
it.isTestModule = compilation.isTestModule
|
sourceSetInfo.isTestModule = compilation.isTestModule
|
||||||
it.compilerArguments = createCompilerArguments(compilation.arguments.currentArguments, compilation.platform).also {
|
sourceSetInfo.compilerArguments = createCompilerArguments(compilation.arguments.currentArguments, compilation.platform).also {
|
||||||
it.multiPlatform = true
|
it.multiPlatform = true
|
||||||
}
|
}
|
||||||
it.dependencyClasspath = compilation.dependencyClasspath
|
sourceSetInfo.dependencyClasspath = compilation.dependencyClasspath
|
||||||
it.defaultCompilerArguments = createCompilerArguments(compilation.arguments.defaultArguments, compilation.platform)
|
sourceSetInfo.defaultCompilerArguments = createCompilerArguments(compilation.arguments.defaultArguments, compilation.platform)
|
||||||
|
sourceSetInfo.addSourceSets(compilation.sourceSets, compilation.fullName(), gradleModule, resolverCtx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun KotlinSourceSetInfo.addSourceSets(
|
||||||
|
sourceSets: Collection<KotlinModule>,
|
||||||
|
selfName: String,
|
||||||
|
gradleModule: IdeaModule,
|
||||||
|
resolverCtx: ProjectResolverContext
|
||||||
|
) {
|
||||||
|
sourceSets
|
||||||
|
.asSequence()
|
||||||
|
.filter { it.fullName() != selfName }
|
||||||
|
.forEach { sourceSetIdsByName[it.name] = getKotlinModuleId(gradleModule, it, resolverCtx) }
|
||||||
|
}
|
||||||
|
|
||||||
private fun createCompilerArguments(args: List<String>, platform: KotlinPlatform): CommonCompilerArguments {
|
private fun createCompilerArguments(args: List<String>, platform: KotlinPlatform): CommonCompilerArguments {
|
||||||
val compilerArguments = IdePlatformKindTooling.getTooling(platform).kind.argumentsClass.newInstance()
|
val compilerArguments = IdePlatformKindTooling.getTooling(platform).kind.argumentsClass.newInstance()
|
||||||
parseCommandLineArguments(args, compilerArguments)
|
parseCommandLineArguments(args, compilerArguments)
|
||||||
|
|||||||
Reference in New Issue
Block a user