diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/getModuleInfo.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/getModuleInfo.kt index e41c16c1681..9ebf037dc03 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/getModuleInfo.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/getModuleInfo.kt @@ -191,17 +191,12 @@ fun getBinaryLibrariesModuleInfos(project: Project, virtualFile: VirtualFile) = fun getLibrarySourcesModuleInfos(project: Project, virtualFile: VirtualFile) = collectModuleInfosByType(project, virtualFile) private inline fun collectModuleInfosByType(project: Project, virtualFile: VirtualFile): Collection { - val orderEntries = ProjectFileIndex.SERVICE.getInstance(project).getOrderEntriesForFile(virtualFile) - - val result = linkedSetOf() - orderEntries.process(project, virtualFile, treatAsLibrarySource = false) { - result.add(it as? T) + val result = linkedSetOf() + 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 List.process( diff --git a/idea/testData/script/definition/navigation/conflictingModule/lib/test/custom.kt b/idea/testData/script/definition/navigation/conflictingModule/lib/test/custom.kt new file mode 100644 index 00000000000..e98015f518f --- /dev/null +++ b/idea/testData/script/definition/navigation/conflictingModule/lib/test/custom.kt @@ -0,0 +1,7 @@ +package test + +object KObject { + fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/script/definition/navigation/conflictingModule/script.kts b/idea/testData/script/definition/navigation/conflictingModule/script.kts new file mode 100644 index 00000000000..1629950abab --- /dev/null +++ b/idea/testData/script/definition/navigation/conflictingModule/script.kts @@ -0,0 +1,7 @@ +test.KObject.foo() + +// DEPENDENCIES: classpath:lib-classes; sources:lib-source +// CONFLICTING_MODULE + +// REF: (in test.KObject).foo() +// FILE: test/custom.kt \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/script/ScriptConfigurationNavigationTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/script/ScriptConfigurationNavigationTestGenerated.java index c1beaf21b2e..9b7329a7f82 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/script/ScriptConfigurationNavigationTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/script/ScriptConfigurationNavigationTestGenerated.java @@ -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/");