From 2274160dfe13d9528c26ff9dfa4ba6b25b19e5af Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 13 May 2024 19:11:25 +0200 Subject: [PATCH] [gradle] don't enlarge scope for local entities ^KTIJ-29258 fixed GitOrigin-RevId: b79035b1e2d40fef0318b3ae464a69d3ecc279b4 --- .../java/src/config/GradleUseScopeEnlarger.kt | 5 ++++ .../testSources/dsl/GradleFindUsagesTest.kt | 24 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/plugins/gradle/java/src/config/GradleUseScopeEnlarger.kt b/plugins/gradle/java/src/config/GradleUseScopeEnlarger.kt index e054ca0c3f02..21fa4cd0f2a3 100644 --- a/plugins/gradle/java/src/config/GradleUseScopeEnlarger.kt +++ b/plugins/gradle/java/src/config/GradleUseScopeEnlarger.kt @@ -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) } diff --git a/plugins/gradle/java/testSources/dsl/GradleFindUsagesTest.kt b/plugins/gradle/java/testSources/dsl/GradleFindUsagesTest.kt index 353e8092c25c..174fd5fb427d 100644 --- a/plugins/gradle/java/testSources/dsl/GradleFindUsagesTest.kt +++ b/plugins/gradle/java/testSources/dsl/GradleFindUsagesTest.kt @@ -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 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") {