diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/JetSourceNavigationHelper.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/JetSourceNavigationHelper.java index 9d085903b89..4c0f03fb9c7 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/JetSourceNavigationHelper.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/JetSourceNavigationHelper.java @@ -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); }