diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt index 37898924850..526dea6ff87 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt @@ -14,20 +14,19 @@ import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.JavaPsiFacade import com.intellij.psi.PsiClass import com.intellij.psi.search.GlobalSearchScope +import com.intellij.psi.search.ProjectScope import com.intellij.psi.stubs.StringStubIndexExtension import com.intellij.util.containers.ContainerUtil import gnu.trove.THashSet import org.jetbrains.annotations.TestOnly import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.idea.caches.project.BinaryModuleInfo +import org.jetbrains.kotlin.idea.caches.project.ScriptDependenciesInfo import org.jetbrains.kotlin.idea.caches.project.getBinaryLibrariesModuleInfos import org.jetbrains.kotlin.idea.caches.project.getLibrarySourcesModuleInfos import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny import org.jetbrains.kotlin.idea.decompiler.navigation.MemberMatching.* -import org.jetbrains.kotlin.idea.stubindex.KotlinFullClassNameIndex -import org.jetbrains.kotlin.idea.stubindex.KotlinTopLevelFunctionFqnNameIndex -import org.jetbrains.kotlin.idea.stubindex.KotlinTopLevelPropertyFqnNameIndex -import org.jetbrains.kotlin.idea.stubindex.KotlinTopLevelTypeAliasFqNameIndex +import org.jetbrains.kotlin.idea.stubindex.* import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.idea.util.isExpectDeclaration import org.jetbrains.kotlin.lexer.KtTokens @@ -63,7 +62,14 @@ object SourceNavigationHelper { val additionalScope = binaryModuleInfos.flatMap { it.associatedCommonLibraries() }.mapNotNull { it.sourcesModuleInfo?.sourceScope() }.union() - primaryScope + additionalScope + + if (binaryModuleInfos.any { it is ScriptDependenciesInfo }) { + // NOTE: this is a workaround for https://github.com/gradle/gradle/issues/13783: + // script configuration for *.gradle.kts files doesn't include sources for included plugins + primaryScope + additionalScope + ProjectScope.getContentScope(containingFile.project) + } else { + primaryScope + additionalScope + } } NavigationKind.SOURCES_TO_CLASS_FILES -> getLibrarySourcesModuleInfos( diff --git a/idea/testData/script/definition/navigation/includedPluginProblem/depModule/test/custom.kt b/idea/testData/script/definition/navigation/includedPluginProblem/depModule/test/custom.kt new file mode 100644 index 00000000000..e98015f518f --- /dev/null +++ b/idea/testData/script/definition/navigation/includedPluginProblem/depModule/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/includedPluginProblem/script.kts b/idea/testData/script/definition/navigation/includedPluginProblem/script.kts new file mode 100644 index 00000000000..68e562cd849 --- /dev/null +++ b/idea/testData/script/definition/navigation/includedPluginProblem/script.kts @@ -0,0 +1,9 @@ +// NOTE: test should fail when https://github.com/gradle/gradle/issues/13783 is fixed +// and the related workaround in SourceNavigationHelper is removed +// Then test can be removed +test.KObject.foo() + +// DEPENDENCIES: classpath:module-classes + +// 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 cab57ad7e3b..90a7d653209 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/script/ScriptConfigurationNavigationTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/script/ScriptConfigurationNavigationTestGenerated.java @@ -43,6 +43,11 @@ public class ScriptConfigurationNavigationTestGenerated extends AbstractScriptCo runTest("idea/testData/script/definition/navigation/customBaseClass/"); } + @TestMetadata("includedPluginProblem") + public void testIncludedPluginProblem() throws Exception { + runTest("idea/testData/script/definition/navigation/includedPluginProblem/"); + } + @TestMetadata("javaLib") public void testJavaLib() throws Exception { runTest("idea/testData/script/definition/navigation/javaLib/");