KT-4211 Can't see kotlin annotation icon for Java-declaration with source

#KT-4211 Fixed
This commit is contained in:
Nikolay Krasko
2013-11-19 21:34:01 +04:00
parent 2b37214efa
commit 3fadff21cb
2 changed files with 29 additions and 3 deletions
@@ -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;
}
@@ -53,6 +53,7 @@ import java.util.Set;
public class ProjectStructureUtil {
private static final Key<CachedValue<Boolean>> IS_KOTLIN_JS_MODULE = Key.create("IS_KOTLIN_JS_MODULE");
private static final Key<CachedValue<Boolean>> HAS_KOTLIN_JVM_MODULES = Key.create("HAS_KOTLIN_JVM_MODULES");
private static final Key<CachedValue<Boolean>> 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<Boolean> result = project.getUserData(HAS_KOTLIN_JVM_MODULES);
if (result == null) {
result = CachedValuesManager.getManager(project).createCachedValue(new CachedValueProvider<Boolean>() {
@Override
public Result<Boolean> 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<Boolean> result = module.getUserData(IS_DEPEND_ON_JVM_KOTLIN);
if (result == null) {