diff --git a/idea/idea-android/src/org/jetbrains/kotlin/android/configure/PlatformAndroidGradleDetector.kt b/idea/idea-android/src/org/jetbrains/kotlin/android/configure/PlatformAndroidGradleDetector.kt index 4cdde939e87..700d84df7af 100644 --- a/idea/idea-android/src/org/jetbrains/kotlin/android/configure/PlatformAndroidGradleDetector.kt +++ b/idea/idea-android/src/org/jetbrains/kotlin/android/configure/PlatformAndroidGradleDetector.kt @@ -44,7 +44,10 @@ class PlatformAndroidGradleDetector : KotlinPlatformGradleDetector { .flatMap { it.data.jarLibraryDependencies.asSequence() } .forEach { val libraryName = it.name - if (libraryName.substringBeforeLast("-") in libraryIds) return libraryName.substringAfterLast("-") + for (libraryId in libraryIds) { + val prefix = "$libraryId-" + if (libraryName.startsWith(prefix)) return libraryName.substringAfter(prefix) + } } return null } diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleSourceSetDataService.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleSourceSetDataService.kt index c21d4ea3234..dc3a896856c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleSourceSetDataService.kt +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleSourceSetDataService.kt @@ -99,7 +99,8 @@ private fun detectPlatformByPlugin(moduleNode: DataNode): TargetPlat } private fun detectPlatformByLibrary(moduleNode: DataNode): TargetPlatformKind<*>? { - return TargetPlatformKind.ALL_PLATFORMS.firstOrNull { moduleNode.getResolvedKotlinStdlibVersionByModuleData(it.mavenLibraryIds) != null } + val detectedPlatforms = mavenLibraryIdToPlatform.entries.filter { moduleNode.getResolvedKotlinStdlibVersionByModuleData(listOf(it.key)) != null }.map { it.value }.distinct() + return detectedPlatforms.singleOrNull() ?: detectedPlatforms.firstOrNull { it != TargetPlatformKind.Common } } private fun configureFacetByGradleModule( diff --git a/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt b/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt index e6ff9d27b42..f5577d15544 100644 --- a/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt @@ -101,6 +101,13 @@ val TargetPlatformKind<*>.mavenLibraryIds: List is TargetPlatformKind.Common -> listOf(MAVEN_COMMON_STDLIB_ID) } +val mavenLibraryIdToPlatform: Map> by lazy { + TargetPlatformKind.ALL_PLATFORMS + .flatMap { platform -> platform.mavenLibraryIds.map { it to platform } } + .sortedByDescending { it.first.length } + .toMap() +} + fun Module.getOrCreateFacet(modelsProvider: IdeModifiableModelsProvider, useProjectSettings: Boolean): KotlinFacet { val facetModel = modelsProvider.getModifiableFacetModel(this) diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest_3_3.kt b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest_3_3.kt index 82f25f86b4a..36062d9d3de 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest_3_3.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest_3_3.kt @@ -91,12 +91,12 @@ class GradleFacetImportTest_3_3 : GradleImportingTestCase() { repositories { mavenCentral() maven { - url 'http://dl.bintray.com/kotlin/kotlin-eap-1.1' + url 'http://dl.bintray.com/kotlin/kotlin-dev' } } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.0") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.2-eap-44") } }