From 02fbb03d6aff381d2f35c317665eb2ec988b8906 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Mon, 1 Oct 2018 17:31:48 +0300 Subject: [PATCH] Show migration when changes are in kts files or inside buildSrc dir (KT-27329) #KT-27329 Fixed --- .../KotlinMigrationProjectComponent.kt | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectComponent.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectComponent.kt index c580859c0fa..56e55865e5a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectComponent.kt +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectComponent.kt @@ -32,6 +32,7 @@ import org.jetbrains.kotlin.idea.project.languageVersionSettings import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.runReadActionInSmartMode import org.jetbrains.kotlin.idea.versions.LibInfo +import java.io.File class KotlinMigrationProjectComponent(val project: Project) { @Volatile @@ -148,12 +149,19 @@ class KotlinMigrationProjectComponent(val project: Project) { return true } + val checkedFiles = HashSet() + + project.basePath?.let { projectBasePath -> + checkedFiles.add(File(projectBasePath)) + } + val changedFiles = ChangeListManager.getInstance(project).affectedPaths for (changedFile in changedFiles) { val extension = changedFile.extension when (extension) { "gradle" -> return true "properties" -> return true + "kts" -> return true "iml" -> return true "xml" -> { if (changedFile.name == "pom.xml") return true @@ -162,6 +170,19 @@ class KotlinMigrationProjectComponent(val project: Project) { return true } } + "kt", "java", "groovy" -> { + val dirs: Sequence = generateSequence(changedFile) { it.parentFile } + .drop(1) // Drop original file + .takeWhile { it.isDirectory } + + val isInBuildSrc = dirs + .takeWhile { checkedFiles.add(it) } + .any { it.name == BUILD_SRC_FOLDER_NAME } + + if (isInBuildSrc) { + return true + } + } } } @@ -214,6 +235,8 @@ fun MigrationInfo.isLanguageVersionUpdate(old: LanguageVersion, new: LanguageVer return oldLanguageVersion <= old && newLanguageVersion >= new } + +private const val BUILD_SRC_FOLDER_NAME = "buildSrc" private const val KOTLIN_GROUP_ID = "org.jetbrains.kotlin" private fun maxKotlinLibVersion(project: Project): LibInfo? {