diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleProjectResolverExtension.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleProjectResolverExtension.kt index 042a25f22d9..0190b6973c3 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleProjectResolverExtension.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleProjectResolverExtension.kt @@ -61,6 +61,15 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension() return setOf(KotlinGradleModel::class.java) } + private fun useModulePerSourceSet(): Boolean { + // See AndroidGradleProjectResolver + val isAndroidProjectKey = Key.findKeyByName("IS_ANDROID_PROJECT_KEY") + if (isAndroidProjectKey != null && resolverCtx.getUserData(isAndroidProjectKey) == true) { + return false + } + return resolverCtx.isResolveModulePerSourceSet + } + override fun populateModuleDependencies(gradleModule: IdeaModule, ideModule: DataNode, ideProject: DataNode) { @@ -76,7 +85,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension() if (this != ideModule) gradleIdeaProject.modules.firstOrNull { it.gradleProject.path == data.id } else gradleModule fun DataNode.getDependencies(): Set> { - if (resolverCtx.isResolveModulePerSourceSet) { + if (useModulePerSourceSet()) { if (sourceSetByName == null) return emptySet() val externalSourceSet = sourceSetByName[data.id]?.second ?: return emptySet() return externalSourceSet.dependencies.mapNotNullTo(LinkedHashSet()) { dependency -> @@ -111,7 +120,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension() } fun addTransitiveDependenciesOnImplementedModules() { - val moduleNodesToProcess = if (resolverCtx.isResolveModulePerSourceSet) { + val moduleNodesToProcess = if (useModulePerSourceSet()) { ExternalSystemApiUtil.findAll(ideModule, GradleSourceSetData.KEY) } else listOf(ideModule) @@ -125,7 +134,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension() val moduleNode = toProcess.pollFirst() processed.add(moduleNode) - val moduleNodeForGradleModel = if (resolverCtx.isResolveModulePerSourceSet) { + val moduleNodeForGradleModel = if (useModulePerSourceSet()) { ExternalSystemApiUtil.findParent(moduleNode, ProjectKeys.MODULE) } else moduleNode @@ -137,7 +146,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension() val implementsInfo = resolverCtx.getExtraProject(ideaModule, KotlinGradleModel::class.java)?.implements val targetModule = implementsInfo?.let { findModule(ideProject, it) } if (targetModule != null) { - if (resolverCtx.isResolveModulePerSourceSet) { + if (useModulePerSourceSet()) { val targetSourceSetsByName = ExternalSystemApiUtil .findAll(targetModule, GradleSourceSetData.KEY) .associateBy { it.sourceSetName }