Fixed representation of project structure when MPP module is involved
KT-37125
This commit is contained in:
+28
-4
@@ -33,7 +33,10 @@ import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
|
||||
import org.jetbrains.kotlin.cli.common.arguments.ManualLanguageFeatureSetting
|
||||
import org.jetbrains.kotlin.cli.common.arguments.parseCommandLineArguments
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.config.ExternalSystemNativeMainRunTask
|
||||
import org.jetbrains.kotlin.config.ExternalSystemRunTask
|
||||
import org.jetbrains.kotlin.config.ExternalSystemTestRunTask
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.gradle.*
|
||||
import org.jetbrains.kotlin.idea.configuration.GradlePropertiesFileFacade.Companion.KOTLIN_NOT_IMPORTED_COMMON_SOURCE_SETS_SETTING
|
||||
import org.jetbrains.kotlin.idea.configuration.klib.KotlinNativeLibrariesDependencySubstitutor
|
||||
@@ -55,6 +58,7 @@ import org.jetbrains.plugins.gradle.util.GradleConstants
|
||||
import java.io.File
|
||||
import java.lang.reflect.Proxy
|
||||
import java.util.*
|
||||
import java.util.stream.Collectors
|
||||
import kotlin.collections.HashMap
|
||||
|
||||
@Order(ExternalSystemConstants.UNORDERED + 1)
|
||||
@@ -861,6 +865,16 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtensionComp
|
||||
private fun getExternalModuleName(gradleModule: IdeaModule, kotlinModule: KotlinModule) =
|
||||
gradleModule.name + ":" + kotlinModule.fullName()
|
||||
|
||||
private fun gradlePathToQualifiedName(
|
||||
rootName: String,
|
||||
gradlePath: String
|
||||
): String? {
|
||||
return ((if (gradlePath.startsWith(":")) "$rootName." else "")
|
||||
+ Arrays.stream(gradlePath.split(":".toRegex()).toTypedArray())
|
||||
.filter { s: String -> s.isNotEmpty() }
|
||||
.collect(Collectors.joining(".")))
|
||||
}
|
||||
|
||||
private fun getInternalModuleName(
|
||||
gradleModule: IdeaModule,
|
||||
externalProject: ExternalProject,
|
||||
@@ -870,14 +884,24 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtensionComp
|
||||
): String {
|
||||
val delimiter: String
|
||||
val moduleName = StringBuilder()
|
||||
|
||||
val buildSrcGroup = resolverCtx.buildSrcGroup
|
||||
if (resolverCtx.isUseQualifiedModuleNames) {
|
||||
delimiter = "."
|
||||
if (StringUtil.isNotEmpty(externalProject.group)) {
|
||||
moduleName.append(externalProject.group).append(delimiter)
|
||||
if (StringUtil.isNotEmpty(buildSrcGroup)) {
|
||||
moduleName.append(buildSrcGroup).append(delimiter)
|
||||
}
|
||||
moduleName.append(externalProject.name)
|
||||
moduleName.append(
|
||||
gradlePathToQualifiedName(
|
||||
gradleModule.project.name,
|
||||
externalProject.qName
|
||||
)
|
||||
)
|
||||
} else {
|
||||
delimiter = "_"
|
||||
if (StringUtil.isNotEmpty(buildSrcGroup)) {
|
||||
moduleName.append(buildSrcGroup).append(delimiter)
|
||||
}
|
||||
moduleName.append(gradleModule.name)
|
||||
}
|
||||
moduleName.append(delimiter)
|
||||
|
||||
+4
-4
@@ -872,16 +872,16 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
importProject(true)
|
||||
checkProjectStructure(true, false, false) {
|
||||
module("KotlinMPPL") {}
|
||||
module("com.example.KotlinMPPL.commonMain") {
|
||||
module("KotlinMPPL.commonMain") {
|
||||
platform(CommonPlatforms.defaultCommonPlatform)
|
||||
}
|
||||
module("com.example.KotlinMPPL.commonTest") {
|
||||
module("KotlinMPPL.commonTest") {
|
||||
platform(CommonPlatforms.defaultCommonPlatform)
|
||||
}
|
||||
module("com.example.KotlinMPPL.jsMain") {
|
||||
module("KotlinMPPL.jsMain") {
|
||||
platform(JsPlatforms.defaultJsPlatform)
|
||||
}
|
||||
module("com.example.KotlinMPPL.jsTest") {
|
||||
module("KotlinMPPL.jsTest") {
|
||||
platform(JsPlatforms.defaultJsPlatform)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -225,7 +225,7 @@ class ModuleInfo(
|
||||
fun sourceFolder(pathInProject: String, rootType: JpsModuleSourceRootType<*>, packagePrefix: String? = ANY_PACKAGE_PREFIX) {
|
||||
val sourceFolder = sourceFolderByPath[pathInProject]
|
||||
if (sourceFolder == null) {
|
||||
projectInfo.messageCollector.report("Module '${module.name}': No source folder found: '$pathInProject'")
|
||||
projectInfo.messageCollector.report("Module '${module.name}': No source folder found: '$pathInProject' among $sourceFolderByPath")
|
||||
return
|
||||
}
|
||||
if (packagePrefix != ANY_PACKAGE_PREFIX && sourceFolder.packagePrefix != packagePrefix) {
|
||||
|
||||
Reference in New Issue
Block a user