JetSourceNavigationHelper: support for Kotlin/Javascript navigation to sources
This commit is contained in:
+12
-1
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user