Don't do resolve for files not under sorce roots

This commit is contained in:
Nikolay Krasko
2014-10-06 16:26:50 +04:00
parent 181b10103f
commit 50265c311e
@@ -57,47 +57,41 @@ public class JetRunConfigurationProducer extends RuntimeConfigurationProducer im
@Override @Override
protected RunnerAndConfigurationSettings createConfigurationByElement(@NotNull Location location, ConfigurationContext configurationContext) { protected RunnerAndConfigurationSettings createConfigurationByElement(@NotNull Location location, ConfigurationContext configurationContext) {
Module module = location.getModule();
if (module == null) {
return null;
}
if (ProjectStructureUtil.isJsKotlinModule(module)) {
return null;
}
JetFile file = getStartClassFile(location); JetFile file = getStartClassFile(location);
if (file == null || !ProjectRootsUtil.isInSource(file, true)) { if (file == null) return null;
return null;
}
mySourceElement = file; mySourceElement = file;
FqName startClassFQName = PackageClassUtils.getPackageClassFqName(file.getPackageFqName()); FqName startClassFQName = PackageClassUtils.getPackageClassFqName(file.getPackageFqName());
Module module = location.getModule();
assert module != null;
return createConfigurationByQName(module, configurationContext, startClassFQName); return createConfigurationByQName(module, configurationContext, startClassFQName);
} }
@Nullable @Nullable
private static JetFile getStartClassFile(@NotNull Location location) { private static JetFile getStartClassFile(@NotNull Location location) {
PsiFile psiFile = location.getPsiElement().getContainingFile(); Module module = location.getModule();
if (psiFile instanceof JetFile) { if (module == null) return null;
JetFile jetFile = (JetFile) psiFile;
final ResolveSessionForBodies session = ResolvePackage.getLazyResolveSession(jetFile);
MainFunctionDetector mainFunctionDetector = new MainFunctionDetector(
new NotNullFunction<JetNamedFunction, FunctionDescriptor>() {
@NotNull
@Override
public FunctionDescriptor fun(JetNamedFunction function) {
return (FunctionDescriptor) session.resolveToDescriptor(function);
}
});
if (mainFunctionDetector.hasMain(jetFile.getDeclarations())) {
return jetFile;
}
}
return null; if (ProjectStructureUtil.isJsKotlinModule(module)) return null;
PsiFile psiFile = location.getPsiElement().getContainingFile();
if (!(psiFile instanceof JetFile && ProjectRootsUtil.isInSource(psiFile, true))) return null;
JetFile jetFile = (JetFile) psiFile;
final ResolveSessionForBodies session = ResolvePackage.getLazyResolveSession(jetFile);
MainFunctionDetector mainFunctionDetector = new MainFunctionDetector(
new NotNullFunction<JetNamedFunction, FunctionDescriptor>() {
@NotNull
@Override
public FunctionDescriptor fun(JetNamedFunction function) {
return (FunctionDescriptor) session.resolveToDescriptor(function);
}
});
return mainFunctionDetector.hasMain(jetFile.getDeclarations()) ? jetFile : null;
} }
@NotNull @NotNull
@@ -121,9 +115,7 @@ public class JetRunConfigurationProducer extends RuntimeConfigurationProducer im
ConfigurationContext context ConfigurationContext context
) { ) {
JetFile file = getStartClassFile(location); JetFile file = getStartClassFile(location);
if (file == null) { if (file == null) return null;
return null;
}
FqName startClassFQName = PackageClassUtils.getPackageClassFqName(file.getPackageFqName()); FqName startClassFQName = PackageClassUtils.getPackageClassFqName(file.getPackageFqName());