Gradle: Do not rely on isQualifiedModuleNamesEnabled() to predict module name
IDEA 173 uses resolve-level setting to control naming of imported modules #KT-20985 Fixed
This commit is contained in:
+25
-3
@@ -49,8 +49,8 @@ var DataNode<ModuleData>.coroutines
|
||||
by UserDataProperty(Key.create<String>("KOTLIN_COROUTINES"))
|
||||
var DataNode<ModuleData>.platformPluginId
|
||||
by UserDataProperty(Key.create<String>("PLATFORM_PLUGIN_ID"))
|
||||
var DataNode<ModuleData>.implementedModule
|
||||
by UserDataProperty(Key.create<DataNode<ModuleData>>("IMPLEMENTS"))
|
||||
var DataNode<out ModuleData>.implementedModuleName
|
||||
by UserDataProperty(Key.create<String>("IMPLEMENTED_MODULE_NAME"))
|
||||
|
||||
class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension() {
|
||||
override fun getToolingExtensionsClasses(): Set<Class<out Any>> {
|
||||
@@ -167,11 +167,33 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension()
|
||||
ideModule.compilerArgumentsBySourceSet = gradleModel.compilerArgumentsBySourceSet
|
||||
ideModule.coroutines = gradleModel.coroutines
|
||||
ideModule.platformPluginId = gradleModel.platformPluginId
|
||||
ideModule.implementedModule = gradleModel.implements?.let { findModule(ideProject, it) }
|
||||
addImplementedModuleNames(ideModule, ideProject, gradleModel)
|
||||
|
||||
super.populateModuleDependencies(gradleModule, ideModule, ideProject)
|
||||
}
|
||||
|
||||
private fun addImplementedModuleNames(
|
||||
dependentModule: DataNode<ModuleData>,
|
||||
ideProject: DataNode<ProjectData>,
|
||||
gradleModel: KotlinGradleModel
|
||||
) {
|
||||
val implementedModule = gradleModel.implements?.let { findModule(ideProject, it) } ?: return
|
||||
if (resolverCtx.isResolveModulePerSourceSet) {
|
||||
val dependentSourceSets = dependentModule.getSourceSetsMap()
|
||||
val implementedSourceSets = implementedModule.getSourceSetsMap()
|
||||
for ((sourceSetName, dependentSourceSet) in dependentSourceSets) {
|
||||
val implementedSourceSet = implementedSourceSets[sourceSetName] ?: continue
|
||||
dependentSourceSet.implementedModuleName = implementedSourceSet.data.internalName
|
||||
}
|
||||
}
|
||||
else {
|
||||
dependentModule.implementedModuleName = implementedModule.data.internalName
|
||||
}
|
||||
}
|
||||
|
||||
private fun DataNode<ModuleData>.getSourceSetsMap() =
|
||||
ExternalSystemApiUtil.getChildren(this, GradleSourceSetData.KEY).associateBy { it.sourceSetName }
|
||||
|
||||
private val DataNode<out ModuleData>.sourceSetName
|
||||
get() = (data as? GradleSourceSetData)?.id?.substringAfterLast(':')
|
||||
|
||||
|
||||
+1
-8
@@ -208,7 +208,7 @@ private fun configureFacetByGradleModule(
|
||||
}
|
||||
|
||||
with(kotlinFacet.configuration.settings) {
|
||||
implementedModuleName = getImplementedModuleName(moduleNode, sourceSetName)
|
||||
implementedModuleName = (sourceSetNode ?: moduleNode).implementedModuleName
|
||||
testOutputPath = getExplicitTestOutputPath(moduleNode, platformKind)
|
||||
}
|
||||
|
||||
@@ -221,13 +221,6 @@ private fun getExplicitTestOutputPath(moduleNode: DataNode<ModuleData>, platform
|
||||
return K2JSCompilerArguments().apply { parseCommandLineArguments(k2jsArgumentList, this) }.outputFile
|
||||
}
|
||||
|
||||
private fun getImplementedModuleName(moduleNode: DataNode<ModuleData>, sourceSetName: String?): String? {
|
||||
val baseModuleName = moduleNode.implementedModule?.data?.internalName
|
||||
if (baseModuleName == null || sourceSetName == null) return baseModuleName
|
||||
val delimiter = if(isQualifiedModuleNamesEnabled()) "." else "_"
|
||||
return "$baseModuleName$delimiter$sourceSetName"
|
||||
}
|
||||
|
||||
private fun adjustClasspath(kotlinFacet: KotlinFacet, dependencyClasspath: List<String>) {
|
||||
if (dependencyClasspath.isEmpty()) return
|
||||
val arguments = kotlinFacet.configuration.settings.compilerArguments as? K2JVMCompilerArguments ?: return
|
||||
|
||||
Reference in New Issue
Block a user