diff --git a/plugins/gradle/java/src/service/resolve/GradleArtifactsContributor.kt b/plugins/gradle/java/src/service/resolve/GradleArtifactsContributor.kt index ef3ecdb0be19..bf43ef221d8b 100644 --- a/plugins/gradle/java/src/service/resolve/GradleArtifactsContributor.kt +++ b/plugins/gradle/java/src/service/resolve/GradleArtifactsContributor.kt @@ -1,12 +1,9 @@ // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package org.jetbrains.plugins.gradle.service.resolve -import com.intellij.openapi.util.Key -import com.intellij.patterns.PatternCondition import com.intellij.util.ProcessingContext import groovy.lang.Closure import org.jetbrains.plugins.gradle.service.resolve.GradleCommonClassNames.* -import org.jetbrains.plugins.groovy.lang.psi.api.GroovyMethodResult import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrClosableBlock import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.TypesUtil.createType import org.jetbrains.plugins.groovy.lang.psi.patterns.GroovyClosurePattern @@ -21,18 +18,9 @@ import org.jetbrains.plugins.groovy.lang.resolve.delegatesTo.DelegatesToInfo class GradleArtifactsContributor : GradleMethodContextContributor { companion object { - private val projectTypeKey: Key = Key.create("gradle.current.project") val artifactsClosure: GroovyClosurePattern = groovyClosure().inMethod( psiMethod(GRADLE_API_PROJECT, "artifacts") - ).inMethodResult(object : PatternCondition("saveProjectContext") { - override fun accepts(result: GroovyMethodResult, context: ProcessingContext?): Boolean { - // Given the closure matched Project#artifacts method, - // we want to determine what we know about this Project. - // This PatternCondition just saves the info into the ProcessingContext. - context?.put(projectTypeKey, result.candidate?.receiver as? GradleProjectAwareType) - return true - } - }) + ).inMethodResult(saveProjectType) val artifactClosure: GroovyClosurePattern = groovyClosure().inMethod( psiMethod(GRADLE_API_ARTIFACT_HANDLER).withKind(GradleArtifactHandlerContributor.ourMethodKind) ) diff --git a/plugins/gradle/java/src/service/resolve/util.kt b/plugins/gradle/java/src/service/resolve/util.kt index caea9c1f6c2d..7ad7b0fab09b 100644 --- a/plugins/gradle/java/src/service/resolve/util.kt +++ b/plugins/gradle/java/src/service/resolve/util.kt @@ -2,12 +2,15 @@ package org.jetbrains.plugins.gradle.service.resolve import com.intellij.openapi.util.Key +import com.intellij.patterns.PatternCondition import com.intellij.psi.* import com.intellij.psi.scope.ElementClassHint import com.intellij.psi.scope.PsiScopeProcessor import com.intellij.psi.util.PsiTreeUtil +import com.intellij.util.ProcessingContext import org.jetbrains.plugins.gradle.util.GradleConstants.EXTENSION import org.jetbrains.plugins.groovy.codeInspection.assignment.GrMethodCallInfo +import org.jetbrains.plugins.groovy.lang.psi.api.GroovyMethodResult import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrClosableBlock import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrMethodCall import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression @@ -26,6 +29,16 @@ import org.jetbrains.plugins.groovy.lang.resolve.processors.ClassHint import org.jetbrains.plugins.groovy.lang.resolve.processors.MethodResolverProcessor import java.util.* +val projectTypeKey: Key = Key.create("gradle.current.project") +val saveProjectType: PatternCondition = object : PatternCondition("saveProjectContext") { + override fun accepts(result: GroovyMethodResult, context: ProcessingContext?): Boolean { + // Given the closure matched some method, + // we want to determine what we know about this Project. + // This PatternCondition just saves the info into the ProcessingContext. + context?.put(projectTypeKey, result.candidate?.receiver as? GradleProjectAwareType) + return true + } +} val DELEGATED_TYPE: Key = Key.create("gradle.delegated.type")