From cec8ce28d25937c2c48aba3a688b3f5dcec99f4c Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Wed, 14 Dec 2016 16:04:27 +0300 Subject: [PATCH] gradle: resolve domain objects within domain container closure as GrLightField to have such candidates with less priority as resolved methods, see org.jetbrains.plugins.groovy.lang.resolve.processors.GroovyResolverProcessorImpl.getCandidates --- .../resolve/GradleNonCodeMembersContributor.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleNonCodeMembersContributor.kt b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleNonCodeMembersContributor.kt index 722f2a6c626f..aa293c083416 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleNonCodeMembersContributor.kt +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/resolve/GradleNonCodeMembersContributor.kt @@ -36,6 +36,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrRefere import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrMethodCallExpression import org.jetbrains.plugins.groovy.lang.psi.impl.GroovyPsiManager import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.TypesUtil +import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrLightField import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrLightMethodBuilder import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrLightVariable import org.jetbrains.plugins.groovy.lang.psi.util.GroovyCommonClassNames.GROOVY_LANG_CLOSURE @@ -120,10 +121,10 @@ class GradleNonCodeMembersContributor : NonCodeMembersContributor() { val domainObjectFqn = TypesUtil.getQualifiedName(domainObjectType) ?: return val psiManager = GroovyPsiManager.getInstance(place.project) - val psiClass = psiManager.findClassWithCache(domainObjectFqn, place.resolveScope) ?: return - if (GradleResolverUtil.canBeMethodOf(propCandidate, psiClass)) return - if (GradleResolverUtil.canBeMethodOf("get" + propCandidate.capitalize(), psiClass)) return - if (GradleResolverUtil.canBeMethodOf("set" + propCandidate.capitalize(), psiClass)) return + val domainObjectPsiClass = psiManager.findClassWithCache(domainObjectFqn, place.resolveScope) ?: return + if (GradleResolverUtil.canBeMethodOf(propCandidate, domainObjectPsiClass)) return + if (GradleResolverUtil.canBeMethodOf("get" + propCandidate.capitalize(), domainObjectPsiClass)) return + if (GradleResolverUtil.canBeMethodOf("set" + propCandidate.capitalize(), domainObjectPsiClass)) return val closure = PsiTreeUtil.getParentOfType(place, GrClosableBlock::class.java) val typeToDelegate = closure?.let { getDelegatesToInfo(it)?.typeToDelegate } @@ -139,7 +140,7 @@ class GradleNonCodeMembersContributor : NonCodeMembersContributor() { } if (!shouldProcessMethods && shouldProcessProperties && place is GrReferenceExpression && place.parent !is GrApplicationStatement) { - val variable = object : GrLightVariable(place.manager, propCandidate, domainObjectType, place) { + val variable = object : GrLightField(propCandidate, domainObjectFqn, place) { override fun getNavigationElement(): PsiElement { val navigationElement = super.getNavigationElement() return navigationElement