KT-4058 Don't check Java annotation in modules with no Kotlin runtime configured
#KT-4058 Fixed
This commit is contained in:
+12
@@ -26,6 +26,8 @@ import com.intellij.ide.util.PropertiesComponent;
|
||||
import com.intellij.openapi.actionSystem.ActionGroup;
|
||||
import com.intellij.openapi.actionSystem.DefaultActionGroup;
|
||||
import com.intellij.openapi.editor.markup.GutterIconRenderer;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleUtilCore;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
@@ -49,6 +51,7 @@ import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||
import org.jetbrains.jet.plugin.JetIcons;
|
||||
import org.jetbrains.jet.plugin.caches.resolve.KotlinCacheManager;
|
||||
import org.jetbrains.jet.plugin.caches.resolve.KotlinDeclarationsCache;
|
||||
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
|
||||
import org.jetbrains.jet.plugin.project.TargetPlatform;
|
||||
|
||||
import java.awt.event.MouseEvent;
|
||||
@@ -86,6 +89,15 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider {
|
||||
return;
|
||||
}
|
||||
|
||||
Module module = ModuleUtilCore.findModuleForPsiElement(elements.get(0));
|
||||
if (module == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!ProjectStructureUtil.isUsedInKotlinJavaModule(module)) {
|
||||
return;
|
||||
}
|
||||
|
||||
BindingTrace trace = createDelegatingTrace(project);
|
||||
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(project, trace);
|
||||
|
||||
|
||||
@@ -47,11 +47,13 @@ import org.jetbrains.jet.plugin.framework.LibraryPresentationProviderUtil;
|
||||
import org.jetbrains.jet.plugin.versions.KotlinRuntimeLibraryUtil;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
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>> IS_DEPEND_ON_JVM_KOTLIN = Key.create("KOTLIN_IS_DEPEND_ON_JVM_KOTLIN");
|
||||
|
||||
private ProjectStructureUtil() {
|
||||
}
|
||||
@@ -84,6 +86,34 @@ public class ProjectStructureUtil {
|
||||
return result.getValue();
|
||||
}
|
||||
|
||||
public static boolean isUsedInKotlinJavaModule(@NotNull final Module module) {
|
||||
CachedValue<Boolean> result = module.getUserData(IS_DEPEND_ON_JVM_KOTLIN);
|
||||
if (result == null) {
|
||||
result = CachedValuesManager.getManager(module.getProject()).createCachedValue(new CachedValueProvider<Boolean>() {
|
||||
@Override
|
||||
public Result<Boolean> compute() {
|
||||
boolean usedInKotlinModule = false;
|
||||
|
||||
Set<Module> dependentModules = new HashSet<Module>();
|
||||
ModuleUtilCore.collectModulesDependsOn(module, dependentModules);
|
||||
|
||||
for (Module module : dependentModules) {
|
||||
if (isJavaKotlinModule(module)) {
|
||||
usedInKotlinModule = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return Result.create(usedInKotlinModule, ProjectRootModificationTracker.getInstance(module.getProject()));
|
||||
}
|
||||
}, false);
|
||||
|
||||
module.putUserData(IS_DEPEND_ON_JVM_KOTLIN, result);
|
||||
}
|
||||
|
||||
return result.getValue();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static List<String> getLibLocationForProject(@NotNull Project project) {
|
||||
Module[] modules = ModuleManager.getInstance(project).getModules();
|
||||
|
||||
Reference in New Issue
Block a user