diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurable.kt b/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurable.kt index 291c21a7e9a6..904af6831c3c 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurable.kt +++ b/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurable.kt @@ -857,10 +857,12 @@ open class RunConfigurable @JvmOverloads constructor(private val myProject: Proj val configurationNodes = ArrayList() collectNodesRecursively(typeNode, configurationNodes, CONFIGURATION, TEMPORARY_CONFIGURATION) - if (countSettingsOfType(allSettings, `object`) != configurationNodes.size) { + val allTypeSettings = allSettings.filter { it.type == `object` } + if (allTypeSettings.size != configurationNodes.size) { return true } + var currentTypeSettingsCount = 0 for (configurationNode in configurationNodes) { val userObject = configurationNode.userObject val settings: RunnerAndConfigurationSettings @@ -877,9 +879,12 @@ open class RunConfigurable @JvmOverloads constructor(private val myProject: Proj continue } - val index = currentSettingCount++ + currentSettingCount++ + val index = currentTypeSettingsCount++ // we compare by instance, equals is not implemented and in any case object modification is checked by other logic - if (allSettings.size <= index || allSettings[index] !== settings) { + // we compare by index among current types settings because indexes among all configurations may differ + // since temporary configurations are stored in the end + if (allTypeSettings.size <= index || allTypeSettings[index] !== settings) { return true } } diff --git a/platform/lang-impl/src/com/intellij/execution/impl/runConfigurableHelper.kt b/platform/lang-impl/src/com/intellij/execution/impl/runConfigurableHelper.kt index ce08c79c0052..6a077dad9a9f 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/runConfigurableHelper.kt +++ b/platform/lang-impl/src/com/intellij/execution/impl/runConfigurableHelper.kt @@ -19,8 +19,6 @@ import com.intellij.execution.Executor import com.intellij.execution.RunnerAndConfigurationSettings import com.intellij.execution.configurations.ConfigurationType -fun countSettingsOfType(allSettings: List, type: ConfigurationType) = allSettings.count { it.type == type } - internal class RunConfigurationBean { val settings: RunnerAndConfigurationSettings val configurable: SingleConfigurationConfigurable<*>?