From 8d5ac4f22c9238e68bf6d5b395a0acdf7b3e3e84 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Mon, 17 Aug 2015 15:46:09 +0300 Subject: [PATCH] IDEA-143804 IAE at gnu.trove.TObjectHash.throwObjectContractViolation --- .../actions/RunConfigurationProducer.java | 6 ++---- .../lineMarker/RunLineMarkerInfo.java | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/platform/lang-api/src/com/intellij/execution/actions/RunConfigurationProducer.java b/platform/lang-api/src/com/intellij/execution/actions/RunConfigurationProducer.java index 155d80996184..04709b93b7f2 100644 --- a/platform/lang-api/src/com/intellij/execution/actions/RunConfigurationProducer.java +++ b/platform/lang-api/src/com/intellij/execution/actions/RunConfigurationProducer.java @@ -233,13 +233,11 @@ public abstract class RunConfigurationProducer { } @Nullable - public ConfigurationFromContext createLightConfiguration(@NotNull final ConfigurationContext context) { + public RunConfiguration createLightConfiguration(@NotNull final ConfigurationContext context) { RunConfiguration configuration = myConfigurationFactory.createTemplateConfiguration(context.getProject()); - RunnerAndConfigurationSettings settings = - RunManager.getInstance(context.getProject()).createConfiguration(configuration, myConfigurationFactory); if (!setupConfigurationFromContext((T)configuration, context, new Ref(context.getPsiLocation()))) { return null; } - return new ConfigurationFromContextImpl(this, settings, context.getPsiLocation()); + return configuration; } } diff --git a/platform/lang-impl/src/com/intellij/execution/lineMarker/RunLineMarkerInfo.java b/platform/lang-impl/src/com/intellij/execution/lineMarker/RunLineMarkerInfo.java index 094fc07019d5..a8d548959b41 100644 --- a/platform/lang-impl/src/com/intellij/execution/lineMarker/RunLineMarkerInfo.java +++ b/platform/lang-impl/src/com/intellij/execution/lineMarker/RunLineMarkerInfo.java @@ -21,11 +21,11 @@ import com.intellij.execution.Executor; import com.intellij.execution.ExecutorRegistry; import com.intellij.execution.Location; import com.intellij.execution.PsiLocation; -import com.intellij.execution.actions.BaseRunConfigurationAction; -import com.intellij.execution.actions.ConfigurationContext; -import com.intellij.execution.actions.ConfigurationFromContext; -import com.intellij.execution.actions.RunConfigurationProducer; +import com.intellij.execution.actions.*; import com.intellij.execution.configurations.LocatableConfiguration; +import com.intellij.execution.configurations.RunConfiguration; +import com.intellij.execution.impl.RunManagerImpl; +import com.intellij.execution.impl.RunnerAndConfigurationSettingsImpl; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.editor.markup.GutterIconRenderer; import com.intellij.openapi.util.UserDataHolderBase; @@ -154,7 +154,7 @@ public class RunLineMarkerInfo extends LineMarkerInfo { new Function, ConfigurationFromContext>() { @Override public ConfigurationFromContext fun(RunConfigurationProducer producer) { - return producer.createLightConfiguration(context); + return createConfiguration(producer, context); } } ); @@ -163,4 +163,12 @@ public class RunLineMarkerInfo extends LineMarkerInfo { String actionName = BaseRunConfigurationAction.suggestRunActionName((LocatableConfiguration)list.get(0).getConfiguration()); return executor.getStartActionText(actionName); } + + @Nullable + private ConfigurationFromContext createConfiguration(RunConfigurationProducer producer, ConfigurationContext context) { + RunConfiguration configuration = producer.createLightConfiguration(context); + if (configuration == null) return null; + RunnerAndConfigurationSettingsImpl settings = new RunnerAndConfigurationSettingsImpl(RunManagerImpl.getInstanceImpl(context.getProject()), configuration, false); + return new ConfigurationFromContextImpl(producer, settings, getElement()); + } }