Fix "Multiple Script Definitions" notification for settings.gradle.kts

^KT-29832 Fixed
This commit is contained in:
Natalia Selezneva
2019-02-15 10:05:40 +03:00
parent d8080f205c
commit 830973a93c
@@ -29,8 +29,7 @@ import org.jetbrains.kotlin.scripting.compiler.plugin.KotlinScriptDefinitionAdap
class MultipleScriptDefinitionsChecker(private val project: Project) : EditorNotifications.Provider<EditorNotificationPanel>() {
override fun getKey(): Key<EditorNotificationPanel> =
KEY
override fun getKey(): Key<EditorNotificationPanel> = KEY
override fun createNotificationPanel(file: VirtualFile, fileEditor: FileEditor): EditorNotificationPanel? {
if (file.fileType != KotlinFileType.INSTANCE) return null
@@ -49,6 +48,7 @@ class MultipleScriptDefinitionsChecker(private val project: Project) : EditorNot
}
.toList()
if (allApplicableDefinitions.size < 2) return null
if (areDefinitionsForGradleKts(allApplicableDefinitions)) return null
return createNotification(
ktFile,
@@ -56,6 +56,14 @@ class MultipleScriptDefinitionsChecker(private val project: Project) : EditorNot
)
}
private fun areDefinitionsForGradleKts(allApplicableDefinitions: List<KotlinScriptDefinition>): Boolean {
if (allApplicableDefinitions.size == 2) {
return (allApplicableDefinitions[0] as? KotlinScriptDefinitionFromAnnotatedTemplate)?.scriptFilePattern?.pattern == "^(settings|.+\\.settings)\\.gradle\\.kts\$"
&& (allApplicableDefinitions[1] as? KotlinScriptDefinitionFromAnnotatedTemplate)?.scriptFilePattern?.pattern == ".*\\.gradle\\.kts"
}
return false
}
companion object {
private val KEY = Key.create<EditorNotificationPanel>("MultipleScriptDefinitionsChecker")