Temporary workaround for gradle issue: wrong navigation for included plugin source code

https://github.com/gradle/gradle/issues/13783
^KT-39522
This commit is contained in:
Natalia Selezneva
2020-07-24 17:04:03 +03:00
parent 7dd687cf00
commit 7b80be5c9d
4 changed files with 32 additions and 5 deletions
@@ -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(