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.module.Module;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.openapi.roots.*;
|
import com.intellij.openapi.roots.*;
|
||||||
|
import com.intellij.openapi.roots.libraries.Library;
|
||||||
import com.intellij.openapi.util.Condition;
|
import com.intellij.openapi.util.Condition;
|
||||||
import com.intellij.openapi.vfs.VirtualFile;
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
import com.intellij.psi.JavaPsiFacade;
|
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.ClassDescriptor;
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl;
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl;
|
||||||
import org.jetbrains.kotlin.di.InjectorForLazyResolve;
|
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.JetFullClassNameIndex;
|
||||||
import org.jetbrains.kotlin.idea.stubindex.JetTopLevelFunctionFqnNameIndex;
|
import org.jetbrains.kotlin.idea.stubindex.JetTopLevelFunctionFqnNameIndex;
|
||||||
import org.jetbrains.kotlin.idea.stubindex.JetTopLevelPropertyFqnNameIndex;
|
import org.jetbrains.kotlin.idea.stubindex.JetTopLevelPropertyFqnNameIndex;
|
||||||
@@ -93,7 +95,9 @@ public class JetSourceNavigationHelper {
|
|||||||
Project project = decompiledDeclaration.getProject();
|
Project project = decompiledDeclaration.getProject();
|
||||||
ProjectFileIndex projectFileIndex = ProjectFileIndex.SERVICE.getInstance(project);
|
ProjectFileIndex projectFileIndex = ProjectFileIndex.SERVICE.getInstance(project);
|
||||||
|
|
||||||
if (!projectFileIndex.isInLibraryClasses(libraryFile)) {
|
boolean isJsProject = JsProjectDetector.isJsProject(project);
|
||||||
|
|
||||||
|
if (!isJsProject && !projectFileIndex.isInLibraryClasses(libraryFile)) {
|
||||||
return GlobalSearchScope.EMPTY_SCOPE;
|
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);
|
return new LibrarySourcesScope(project, sourceRootSet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user