KT-780 NullPointerException on constructing new run configuration
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user