Ignore "module per source set" option in Android projects

This commit is contained in:
Dmitry Jemerov
2017-10-20 14:59:57 +02:00
parent 14a30e09c6
commit f589c9baf0
@@ -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<ModuleData>,
ideProject: DataNode<ProjectData>) {
@@ -76,7 +85,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension()
if (this != ideModule) gradleIdeaProject.modules.firstOrNull { it.gradleProject.path == data.id } else gradleModule
fun DataNode<out ModuleData>.getDependencies(): Set<DataNode<out ModuleData>> {
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 }