KT-780 NullPointerException on constructing new run configuration

This commit is contained in:
Nikolay Krasko
2011-12-29 17:50:59 +04:00
parent 533bab41ef
commit 50dc6760c1
@@ -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);