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:
+11
-5
@@ -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(
|
||||
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package test
|
||||
|
||||
object KObject {
|
||||
fun foo() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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.<caret>foo()
|
||||
|
||||
// DEPENDENCIES: classpath:module-classes
|
||||
|
||||
// REF: (in test.KObject).foo()
|
||||
// FILE: test/custom.kt
|
||||
Generated
+5
@@ -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/");
|
||||
|
||||
Reference in New Issue
Block a user