From d500d31ec2d7bfa8d6c8e0e2c9f770195fd59ef8 Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Tue, 19 Aug 2025 14:52:41 +0000 Subject: [PATCH] [ktor] KTOR-8776 Fix "cannot access" false-positive in run configuration editor This occurs when the main method is in a companion object which itself is inside a nested class. Merge-request: IJ-MR-172860 Merged-by: Bartek Pacia GitOrigin-RevId: d2d812ba6e84648c922f2ad32942e6360dad12f8 --- .../run/KotlinRunConfigurationEditor.java | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/plugins/kotlin/run-configurations/jvm/src/org/jetbrains/kotlin/idea/run/KotlinRunConfigurationEditor.java b/plugins/kotlin/run-configurations/jvm/src/org/jetbrains/kotlin/idea/run/KotlinRunConfigurationEditor.java index 6b1bad6abe9f..fb44d6469dc3 100644 --- a/plugins/kotlin/run-configurations/jvm/src/org/jetbrains/kotlin/idea/run/KotlinRunConfigurationEditor.java +++ b/plugins/kotlin/run-configurations/jvm/src/org/jetbrains/kotlin/idea/run/KotlinRunConfigurationEditor.java @@ -128,16 +128,8 @@ public final class KotlinRunConfigurationEditor extends SettingsEditor(); - mainClass.setComponent(ClassEditorField.createClassField(project, () -> moduleSelector.getModule(), (declaration, place) -> { - if (declaration instanceof KtLightClass aClass) { - if (ConfigurationUtil.MAIN_CLASS.value(aClass) - && (PsiMethodUtil.findMainMethod(aClass) != null || place.getParent() != null) - && moduleSelector.findClass(((PsiClass)declaration).getQualifiedName()) != null) { - return JavaCodeFragment.VisibilityChecker.Visibility.VISIBLE; - } - } - return JavaCodeFragment.VisibilityChecker.Visibility.NOT_VISIBLE; - }, createApplicationClassBrowser(project, () -> moduleSelector.getModule(), moduleChooser))); + mainClass.setComponent(ClassEditorField.createClassField(project, () -> moduleSelector.getModule(), VISIBILITY_CHECKER, + createApplicationClassBrowser(project, () -> moduleSelector.getModule(), moduleChooser))); } @Override @@ -154,4 +146,15 @@ public final class KotlinRunConfigurationEditor extends SettingsEditor { + if (declaration instanceof KtLightClass aClass) { + if (ConfigurationUtil.MAIN_CLASS.value(aClass) + && (PsiMethodUtil.findMainMethod(aClass) != null || place.getParent() != null) + && ModuleUtilCore.findModuleForPsiElement(declaration) != null) { + return JavaCodeFragment.VisibilityChecker.Visibility.VISIBLE; + } + } + return JavaCodeFragment.VisibilityChecker.Visibility.NOT_VISIBLE; + }; +} \ No newline at end of file