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 7f2e1ef775f8..0b378792a3ed 100644 --- a/platform/lang-api/src/com/intellij/execution/actions/RunConfigurationProducer.java +++ b/platform/lang-api/src/com/intellij/execution/actions/RunConfigurationProducer.java @@ -85,19 +85,16 @@ public abstract class RunConfigurationProducer { @Nullable public ConfigurationFromContext createConfigurationFromContext(ConfigurationContext context) { final RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(context); - final Ref locationRef = new Ref(context.getPsiLocation()); - T configuration = null; try { - configuration = (T)settings.getConfiguration(); + if (!setupConfigurationFromContext((T)settings.getConfiguration(), context, new Ref(context.getPsiLocation()))) { + return null; + } } catch (ClassCastException e) { LOG.error(myConfigurationFactory + " produced wrong type", e); return null; } - if (!setupConfigurationFromContext(configuration, context, locationRef)) { - return null; - } - return new ConfigurationFromContextImpl(this, settings, locationRef.get()); + return new ConfigurationFromContextImpl(this, settings, context.getPsiLocation()); } /** @@ -248,7 +245,13 @@ public abstract class RunConfigurationProducer { @Nullable public RunConfiguration createLightConfiguration(@NotNull final ConfigurationContext context) { RunConfiguration configuration = myConfigurationFactory.createTemplateConfiguration(context.getProject()); - if (!setupConfigurationFromContext((T)configuration, context, new Ref(context.getPsiLocation()))) { + try { + if (!setupConfigurationFromContext((T)configuration, context, new Ref(context.getPsiLocation()))) { + return null; + } + } + catch (Exception e) { + LOG.error(myConfigurationFactory + " produced wrong type", e); return null; } return configuration;