KT-4610 Can't run a Kotlin class against class path of a different module
#KT-4610 Fixed
This commit is contained in:
@@ -241,11 +241,11 @@ public class JetRunConfiguration extends ModuleBasedConfiguration<RunConfigurati
|
|||||||
|
|
||||||
Module classModule = ModuleUtilCore.findModuleForPsiElement(mainFun);
|
Module classModule = ModuleUtilCore.findModuleForPsiElement(mainFun);
|
||||||
if (classModule == null) classModule = module;
|
if (classModule == null) classModule = module;
|
||||||
ModuleFileIndex fileIndex = ModuleRootManager.getInstance(classModule).getFileIndex();
|
|
||||||
|
|
||||||
VirtualFile virtualFileForMainFun = mainFun.getContainingFile().getVirtualFile();
|
VirtualFile virtualFileForMainFun = mainFun.getContainingFile().getVirtualFile();
|
||||||
if (virtualFileForMainFun == null) throw new CantRunException(String.format("Top-level function 'main' not found in package '%s'", packageFqName));
|
if (virtualFileForMainFun == null) throw new CantRunException(String.format("Top-level function 'main' not found in package '%s'", packageFqName));
|
||||||
|
|
||||||
|
ModuleFileIndex fileIndex = ModuleRootManager.getInstance(classModule).getFileIndex();
|
||||||
if (fileIndex.isInSourceContent(virtualFileForMainFun)) {
|
if (fileIndex.isInSourceContent(virtualFileForMainFun)) {
|
||||||
if (fileIndex.isInTestSourceContent(virtualFileForMainFun)) {
|
if (fileIndex.isInTestSourceContent(virtualFileForMainFun)) {
|
||||||
return JavaParameters.JDK_AND_CLASSES_AND_TESTS;
|
return JavaParameters.JDK_AND_CLASSES_AND_TESTS;
|
||||||
@@ -266,8 +266,8 @@ public class JetRunConfiguration extends ModuleBasedConfiguration<RunConfigurati
|
|||||||
@Nullable
|
@Nullable
|
||||||
private JetNamedFunction findMainFun(@NotNull Module module, @NotNull FqName packageFqName) throws CantRunException {
|
private JetNamedFunction findMainFun(@NotNull Module module, @NotNull FqName packageFqName) throws CantRunException {
|
||||||
String mainFunFqName = packageFqName.child(Name.identifier("main")).asString();
|
String mainFunFqName = packageFqName.child(Name.identifier("main")).asString();
|
||||||
Collection<JetNamedFunction> mainFunctions =
|
Collection<JetNamedFunction> mainFunctions = JetTopLevelFunctionsFqnNameIndex.getInstance().get(
|
||||||
JetTopLevelFunctionsFqnNameIndex.getInstance().get(mainFunFqName, module.getProject(), module.getModuleScope(true));
|
mainFunFqName, module.getProject(), module.getModuleRuntimeScope(true));
|
||||||
for (JetNamedFunction function : mainFunctions) {
|
for (JetNamedFunction function : mainFunctions) {
|
||||||
if (JetMainDetector.isMain(function)) {
|
if (JetMainDetector.isMain(function)) {
|
||||||
return function;
|
return function;
|
||||||
|
|||||||
Reference in New Issue
Block a user