diff --git a/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureInJavaMarkerProvider.java b/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureInJavaMarkerProvider.java index 8fb3611039e..c4f5492bf46 100644 --- a/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureInJavaMarkerProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureInJavaMarkerProvider.java @@ -89,12 +89,12 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider { return; } - Module module = ModuleUtilCore.findModuleForPsiElement(elements.get(0)); - if (module == null) { + if (!ProjectStructureUtil.hasJvmKotlinModules(project)) { return; } - if (!ProjectStructureUtil.isUsedInKotlinJavaModule(module)) { + Module module = ModuleUtilCore.findModuleForPsiElement(elements.get(0)); + if (module != null && !ProjectStructureUtil.isUsedInKotlinJavaModule(module)) { return; } diff --git a/idea/src/org/jetbrains/jet/plugin/project/ProjectStructureUtil.java b/idea/src/org/jetbrains/jet/plugin/project/ProjectStructureUtil.java index 01325ab3fcf..46a288c7209 100644 --- a/idea/src/org/jetbrains/jet/plugin/project/ProjectStructureUtil.java +++ b/idea/src/org/jetbrains/jet/plugin/project/ProjectStructureUtil.java @@ -53,6 +53,7 @@ import java.util.Set; public class ProjectStructureUtil { private static final Key> IS_KOTLIN_JS_MODULE = Key.create("IS_KOTLIN_JS_MODULE"); + private static final Key> HAS_KOTLIN_JVM_MODULES = Key.create("HAS_KOTLIN_JVM_MODULES"); private static final Key> IS_DEPEND_ON_JVM_KOTLIN = Key.create("KOTLIN_IS_DEPEND_ON_JVM_KOTLIN"); private ProjectStructureUtil() { @@ -86,6 +87,31 @@ public class ProjectStructureUtil { return result.getValue(); } + public static boolean hasJvmKotlinModules(@NotNull final Project project) { + CachedValue result = project.getUserData(HAS_KOTLIN_JVM_MODULES); + if (result == null) { + result = CachedValuesManager.getManager(project).createCachedValue(new CachedValueProvider() { + @Override + public Result compute() { + boolean hasJvmKotlinModules = false; + + for (Module module : ModuleManager.getInstance(project).getModules()) { + if (isJavaKotlinModule(module)) { + hasJvmKotlinModules = true; + break; + } + } + + return Result.create(hasJvmKotlinModules, ProjectRootModificationTracker.getInstance(project)); + } + }, false); + + project.putUserData(HAS_KOTLIN_JVM_MODULES, result); + } + + return result.getValue(); + } + public static boolean isUsedInKotlinJavaModule(@NotNull final Module module) { CachedValue result = module.getUserData(IS_DEPEND_ON_JVM_KOTLIN); if (result == null) {