From 64b1cc7fd47251567d4c2e06dd201a9d44b72c66 Mon Sep 17 00:00:00 2001 From: Sergey Rostov Date: Tue, 16 Jun 2020 19:01:27 +0300 Subject: [PATCH] gradle.kts legacy: out of project script notification --- .../GradleScriptNotificationProvider.kt | 8 ++++++++ .../gradle/roots/GradleBuildRootsLocator.kt | 19 +++++++++---------- .../gradle/roots/GradleBuildRootsManager.kt | 2 +- .../kotlin/idea/scripting/gradle/utils.kt | 2 +- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptNotificationProvider.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptNotificationProvider.kt index b4624724649..8fe353181d0 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptNotificationProvider.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptNotificationProvider.kt @@ -30,6 +30,14 @@ class GradleScriptNotificationProvider(private val project: Project) : val scriptUnderRoot = rootsManager.findScriptBuildRoot(file) ?: return null return when (scriptUnderRoot.notificationKind) { dontCare -> null + legacyOutside -> EditorNotificationPanel().apply { + text("Out of project script") + createActionLabel(KotlinIdeaGradleBundle.message("notification.notEvaluatedInLastImport.addAsStandaloneAction")) { + rootsManager.updateStandaloneScripts { + addStandaloneScript(file.path) + } + } + } outsideAnything -> EditorNotificationPanel().apply { text(KotlinIdeaGradleBundle.message("notification.outsideAnything.text")) createActionLabel(KotlinIdeaGradleBundle.message("notification.outsideAnything.linkAction")) { diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsLocator.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsLocator.kt index 088cb560db6..a84b43ee58f 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsLocator.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsLocator.kt @@ -89,7 +89,10 @@ abstract class GradleBuildRootsLocator { nearest == null -> NotificationKind.outsideAnything importing -> NotificationKind.dontCare else -> when (nearest) { - is Legacy -> NotificationKind.dontCare + is Legacy -> when { + root == null -> NotificationKind.legacyOutside + else -> NotificationKind.dontCare + } is New -> NotificationKind.wasNotImportedAfterCreation is Imported -> when { wasImportedAndNotEvaluated -> NotificationKind.notEvaluatedInLastImport @@ -141,14 +144,10 @@ abstract class GradleBuildRootsLocator { return ScriptUnderRoot(filePath, standaloneScriptRoot, standalone = true) } - if (searchNearestLegacy) { - val nearest = roots.findNearestRoot(filePath) - return when (nearest) { - is Legacy -> ScriptUnderRoot(filePath, nearest) - else -> ScriptUnderRoot(filePath, null, nearest = nearest) - } - } else { - return ScriptUnderRoot(filePath, null) - } + val nearest = + if (searchNearestLegacy) roots.findNearestRoot(filePath) + else null + + return ScriptUnderRoot(filePath, null, nearest = nearest) } } \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt index 5eae01bb447..59b5fef7db1 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt @@ -83,7 +83,7 @@ class GradleBuildRootsManager(val project: Project) : GradleBuildRootsLocator(), override fun isApplicable(file: VirtualFile): Boolean { val scriptUnderRoot = findScriptBuildRoot(file) ?: return false - if (scriptUnderRoot.root is Legacy) return false + if (scriptUnderRoot.nearest is Legacy) return false if (roots.isStandaloneScript(file.path)) return false return true } diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/utils.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/utils.kt index c3e5ed3317a..20c610674f6 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/utils.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/utils.kt @@ -63,7 +63,7 @@ fun getGradleScriptInputsStamp( } } - val buildRoot = GradleBuildRootsManager.getInstance(project).findScriptBuildRoot(file)?.root as? GradleBuildRoot + val buildRoot = GradleBuildRootsManager.getInstance(project).findScriptBuildRoot(file)?.nearest as? GradleBuildRoot GradleKotlinScriptConfigurationInputs(result.toString(), givenTimeStamp, buildRoot?.pathPrefix) } else null }