From 2cdd8e485be1918d07f275581bb41d64cebc01af Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Mon, 25 Mar 2019 20:20:13 +0300 Subject: [PATCH] [gradle] extract GradleNonCodeMembersContributor#shouldSkipDeclarationsAndSetters org.jetbrains.plugins.gradle.service.resolve.UtilKt.processDeclarations uses questionable algorithm and duplicates declarations causing unexpected side-effects. Later #shouldSkipDeclarationsAndSetters should return true for any qualified name, i.e. aforementioned #processDeclarations won't be used anymore. --- .../resolve/GradleNonCodeMembersContributor.kt | 7 ++++++- .../resolve/GradleSetterAsMethodContributor.kt | 12 ++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/plugins/gradle/java/src/service/resolve/GradleNonCodeMembersContributor.kt b/plugins/gradle/java/src/service/resolve/GradleNonCodeMembersContributor.kt index c72ec8713b4f..7bb508230919 100644 --- a/plugins/gradle/java/src/service/resolve/GradleNonCodeMembersContributor.kt +++ b/plugins/gradle/java/src/service/resolve/GradleNonCodeMembersContributor.kt @@ -96,7 +96,7 @@ class GradleNonCodeMembersContributor : NonCodeMembersContributor() { extensionsData.findProperty(propCandidate)?.let(processVariable) } else { - if (aClass.qualifiedName !in GradleConventionsContributor.conventions) { + if (!shouldSkipDeclarationsAndSetters(aClass.qualifiedName)) { processDeclarations(aClass, processor, state, place) } val propCandidate = place.references.singleOrNull()?.canonicalText ?: return @@ -157,4 +157,9 @@ class GradleNonCodeMembersContributor : NonCodeMembersContributor() { } } } + + private fun shouldSkipDeclarationsAndSetters(qualifiedName: String?): Boolean { + return qualifiedName in GradleSetterAsMethodContributor.knownDecoratedClasses + || qualifiedName in GradleConventionsContributor.conventions + } } diff --git a/plugins/gradle/java/src/service/resolve/GradleSetterAsMethodContributor.kt b/plugins/gradle/java/src/service/resolve/GradleSetterAsMethodContributor.kt index cac1e91d0392..00da0871bcaa 100644 --- a/plugins/gradle/java/src/service/resolve/GradleSetterAsMethodContributor.kt +++ b/plugins/gradle/java/src/service/resolve/GradleSetterAsMethodContributor.kt @@ -17,10 +17,14 @@ import org.jetbrains.plugins.groovy.lang.resolve.shouldProcessMethods class GradleSetterAsMethodContributor : NonCodeMembersContributor() { - override fun getClassNames(): Collection = listOf( - GRADLE_API_PROJECT, - GRADLE_API_ARTIFACTS_MODULE_DEPENDENCY - ) + companion object { + val knownDecoratedClasses = setOf( + GRADLE_API_PROJECT, + GRADLE_API_ARTIFACTS_MODULE_DEPENDENCY + ) + } + + override fun getClassNames(): Collection = knownDecoratedClasses override fun processDynamicElements(qualifierType: PsiType, aClass: PsiClass?,