[gradle] don't enlarge scope for local entities

^KTIJ-29258 fixed

GitOrigin-RevId: b79035b1e2d40fef0318b3ae464a69d3ecc279b4
This commit is contained in:
Anna Kozlova
2024-05-14 08:00:48 +00:00
committed by intellij-monorepo-bot
parent 730f0bdcab
commit 2274160dfe
2 changed files with 29 additions and 0 deletions
@@ -14,6 +14,7 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.PsiElementFinder
import com.intellij.psi.PsiMember
import com.intellij.psi.PsiReference
import com.intellij.psi.search.LocalSearchScope
import com.intellij.psi.search.SearchScope
import com.intellij.psi.search.UseScopeEnlarger
import com.intellij.psi.search.searches.ReferencesSearch
@@ -43,6 +44,10 @@ class GradleUseScopeEnlarger : UseScopeEnlarger() {
if (!isInBuildSrc(project, virtualFile) && !isInGradleDistribution(project, virtualFile)) return null
val useScope = element.useScope
if (useScope is LocalSearchScope && useScope.virtualFiles.singleOrNull() == virtualFile) {
return null
}
return GradleBuildscriptSearchScope(element.project)
}
@@ -1,6 +1,7 @@
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.plugins.gradle.dsl
import com.intellij.psi.search.LocalSearchScope
import com.intellij.psi.search.searches.ReferencesSearch
import com.intellij.testFramework.runInEdtAndWait
import org.gradle.util.GradleVersion
@@ -36,6 +37,29 @@ class GradleFindUsagesTest: GradleCodeInsightTestCase() {
}
}
@ParameterizedTest
@BaseGradleVersionSource
fun testLocalProperty(gradleVersion: GradleVersion) {
test(gradleVersion, VERSION_CATALOG_FIXTURE) {
writeTextAndCommit("build.gradle", """
tasks.register('hello') {
doLast {
def <caret>a = 0
println a
}
}
""".trimIndent())
runInEdtAndWait {
codeInsightFixture.configureFromExistingVirtualFile(getFile("build.gradle"))
val property = fixture.elementAtCaret // what
Assertions.assertTrue(property.useScope is LocalSearchScope)
val usages = ReferencesSearch.search(property).findAll()
Assertions.assertTrue(usages.size == 1)
Assertions.assertTrue(usages.single().element.containingFile.name == "build.gradle")
}
}
}
companion object {
private val VERSION_CATALOG_FIXTURE = GradleTestFixtureBuilder.create("GradleVersionCatalogs-findUsages") {