JetSourceNavigationHelper: support for Kotlin/Javascript navigation to sources

This commit is contained in:
Michael Nedzelsky
2015-03-05 16:02:43 +03:00
parent 19950fcc60
commit 6f0ee2ed94
@@ -21,6 +21,7 @@ import com.google.common.collect.Sets;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.*;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.JavaPsiFacade;
@@ -44,6 +45,7 @@ import org.jetbrains.kotlin.descriptors.CallableDescriptor;
import org.jetbrains.kotlin.descriptors.ClassDescriptor;
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl;
import org.jetbrains.kotlin.di.InjectorForLazyResolve;
import org.jetbrains.kotlin.idea.caches.resolve.JsProjectDetector;
import org.jetbrains.kotlin.idea.stubindex.JetFullClassNameIndex;
import org.jetbrains.kotlin.idea.stubindex.JetTopLevelFunctionFqnNameIndex;
import org.jetbrains.kotlin.idea.stubindex.JetTopLevelPropertyFqnNameIndex;
@@ -93,7 +95,9 @@ public class JetSourceNavigationHelper {
Project project = decompiledDeclaration.getProject();
ProjectFileIndex projectFileIndex = ProjectFileIndex.SERVICE.getInstance(project);
if (!projectFileIndex.isInLibraryClasses(libraryFile)) {
boolean isJsProject = JsProjectDetector.isJsProject(project);
if (!isJsProject && !projectFileIndex.isInLibraryClasses(libraryFile)) {
return GlobalSearchScope.EMPTY_SCOPE;
}
@@ -104,6 +108,13 @@ public class JetSourceNavigationHelper {
}
}
if (isJsProject) {
Library library = NavigationPackage.getKotlinJavascriptLibrary(libraryFile, project);
if (library != null) {
KotlinPackage.addAll(sourceRootSet, library.getFiles(OrderRootType.SOURCES));
}
}
return new LibrarySourcesScope(project, sourceRootSet);
}