diff --git a/idea/src/org/jetbrains/jet/plugin/run/JetRunConfigurationProducer.java b/idea/src/org/jetbrains/jet/plugin/run/JetRunConfigurationProducer.java index a436a8b5ff4..9a022ae678b 100644 --- a/idea/src/org/jetbrains/jet/plugin/run/JetRunConfigurationProducer.java +++ b/idea/src/org/jetbrains/jet/plugin/run/JetRunConfigurationProducer.java @@ -8,7 +8,8 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import org.jetbrains.jet.lang.psi.JetClass; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.plugin.JetMainDetector; @@ -17,24 +18,26 @@ import org.jetbrains.jet.plugin.JetMainDetector; * @author yole */ public class JetRunConfigurationProducer extends RuntimeConfigurationProducer implements Cloneable { + @Nullable private PsiElement mySourceElement; public JetRunConfigurationProducer() { super(JetRunConfigurationType.getInstance()); } + @Nullable @Override public PsiElement getSourceElement() { return mySourceElement; } @Override - protected RunnerAndConfigurationSettings createConfigurationByElement(Location location, ConfigurationContext configurationContext) { - JetClass containingClass = (JetClass) location.getParentElement(JetClass.class); - if (containingClass != null && JetMainDetector.hasMain(containingClass.getDeclarations())) { - mySourceElement = containingClass; - return createConfigurationByQName(location.getModule(), configurationContext, JetPsiUtil.getFQName(containingClass)); + protected RunnerAndConfigurationSettings createConfigurationByElement(@NotNull Location location, ConfigurationContext configurationContext) { + final Module module = location.getModule(); + if (module == null) { + return null; } + PsiFile psiFile = location.getPsiElement().getContainingFile(); if (psiFile instanceof JetFile) { JetFile jetFile = (JetFile) psiFile; @@ -42,13 +45,17 @@ public class JetRunConfigurationProducer extends RuntimeConfigurationProducer im mySourceElement = jetFile; String fqName = JetPsiUtil.getFQName(jetFile); String className = fqName.length() == 0 ? "namespace" : fqName + ".namespace"; - return createConfigurationByQName(location.getModule(), configurationContext, className); + return createConfigurationByQName(module, configurationContext, className); } } return null; } - private RunnerAndConfigurationSettings createConfigurationByQName(Module module, ConfigurationContext context, String fqName) { + private RunnerAndConfigurationSettings createConfigurationByQName( + @NotNull Module module, + ConfigurationContext context, + @NotNull String fqName + ) { RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(module.getProject(), context); JetRunConfiguration configuration = (JetRunConfiguration) settings.getConfiguration(); configuration.setModule(module);