Fix navigation to script dependency sources failing
Specifically in case where some lib is in project and script dependencies at the same time
This commit is contained in:
@@ -191,17 +191,12 @@ fun getBinaryLibrariesModuleInfos(project: Project, virtualFile: VirtualFile) =
|
||||
fun getLibrarySourcesModuleInfos(project: Project, virtualFile: VirtualFile) = collectModuleInfosByType<LibrarySourceInfo>(project, virtualFile)
|
||||
|
||||
private inline fun <reified T : IdeaModuleInfo> collectModuleInfosByType(project: Project, virtualFile: VirtualFile): Collection<T> {
|
||||
val orderEntries = ProjectFileIndex.SERVICE.getInstance(project).getOrderEntriesForFile(virtualFile)
|
||||
|
||||
val result = linkedSetOf<T?>()
|
||||
orderEntries.process(project, virtualFile, treatAsLibrarySource = false) {
|
||||
result.add(it as? T)
|
||||
val result = linkedSetOf<T>()
|
||||
processVirtualFile(project, virtualFile, treatAsLibrarySource = false) {
|
||||
result.addIfNotNull(it as? T)
|
||||
}
|
||||
// NOTE: non idea model infos can be obtained this way, like script related infos
|
||||
// only one though, luckily it covers existing cases
|
||||
result.add(getModuleInfoByVirtualFile(project, virtualFile) as? T)
|
||||
|
||||
return result.filterNotNull()
|
||||
return result
|
||||
}
|
||||
|
||||
private inline fun <T> List<OrderEntry>.process(
|
||||
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package test
|
||||
|
||||
object KObject {
|
||||
fun foo() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
test.KObject.<caret>foo()
|
||||
|
||||
// DEPENDENCIES: classpath:lib-classes; sources:lib-source
|
||||
// CONFLICTING_MODULE
|
||||
|
||||
// REF: (in test.KObject).foo()
|
||||
// FILE: test/custom.kt
|
||||
+6
@@ -36,6 +36,12 @@ public class ScriptConfigurationNavigationTestGenerated extends AbstractScriptCo
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/script/definition/navigation"), Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, false);
|
||||
}
|
||||
|
||||
@TestMetadata("conflictingModule")
|
||||
public void testConflictingModule() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/script/definition/navigation/conflictingModule/");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("customBaseClass")
|
||||
public void testCustomBaseClass() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/script/definition/navigation/customBaseClass/");
|
||||
|
||||
Reference in New Issue
Block a user