*.gradle.kts: include project sources in script dependencies sources scope

^KT-39523 Fixed
This commit is contained in:
Natalia Selezneva
2020-06-11 17:09:37 +03:00
parent 93d7015139
commit 3d91c410e7
6 changed files with 32 additions and 2 deletions
@@ -132,7 +132,9 @@ sealed class ScriptDependenciesSourceInfo(override val project: Project) : IdeaM
override val binariesModuleInfo: ScriptDependenciesInfo
get() = ScriptDependenciesInfo.ForProject(project)
override fun sourceScope(): GlobalSearchScope = KotlinSourceFilterScope.librarySources(
// include project sources because script dependencies sources may contain roots from project
// the main example is buildSrc for *.gradle.kts files
override fun sourceScope(): GlobalSearchScope = KotlinSourceFilterScope.projectAndLibrariesSources(
ScriptConfigurationManager.getInstance(project).getAllScriptDependenciesSourcesScope(), project
)
@@ -157,7 +157,7 @@ class KotlinSourceFilterScope private constructor(
includeProjectSourceFiles = true,
includeLibrarySourceFiles = true,
includeClassFiles = false,
includeScriptDependencies = false,
includeScriptDependencies = true,
includeScriptsOutsideSourceRoots = true,
project = project
)
@@ -0,0 +1,7 @@
package test
object KObject {
fun foo() {
}
}
@@ -0,0 +1,6 @@
test.KObject.<caret>foo()
// DEPENDENCIES: classpath:module-classes; sources:module-source
// REF: (in test.KObject).foo()
// FILE: test/custom.kt
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.idea.highlighter.KotlinHighlightingUtil
import org.jetbrains.kotlin.idea.script.AbstractScriptConfigurationTest.Companion.useDefaultTemplate
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
import org.jetbrains.kotlin.idea.util.application.runWriteAction
import org.jetbrains.kotlin.idea.util.projectStructure.getModuleDir
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
import org.jetbrains.kotlin.test.KotlinTestUtils
@@ -265,11 +266,20 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() {
val libClasses = libSrcDir?.let { compileLibToDir(it) }
var moduleSrcDir = File("${path}depModule").takeIf { it.isDirectory }
val moduleClasses = moduleSrcDir?.let { compileLibToDir(it) }
if (moduleSrcDir != null) {
val depModule = createTestModuleFromDir(moduleSrcDir)
moduleSrcDir = File(depModule.getModuleDir())
}
return mapOf(
"runtime-classes" to ForTestCompileRuntime.runtimeJarForTests(),
"runtime-source" to File("libraries/stdlib/src"),
"lib-classes" to libClasses,
"lib-source" to libSrcDir,
"module-classes" to moduleClasses,
"module-source" to moduleSrcDir,
"template-classes" to templateOutDir
)
}
@@ -28,6 +28,11 @@ public class ScriptConfigurationNavigationTestGenerated extends AbstractScriptCo
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/testData/script/definition/navigation"), Pattern.compile("^([^\\.]+)$"), null, false);
}
@TestMetadata("buildSrcProblem")
public void testBuildSrcProblem() throws Exception {
runTest("idea/testData/script/definition/navigation/buildSrcProblem/");
}
@TestMetadata("conflictingModule")
public void testConflictingModule() throws Exception {
runTest("idea/testData/script/definition/navigation/conflictingModule/");