[gradle] move saveProjectType pattern to utils

This commit is contained in:
Daniil Ovchinnikov
2019-03-29 19:56:34 +03:00
parent 93f47a3978
commit 1c2fd6d276
2 changed files with 14 additions and 13 deletions
@@ -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<GradleProjectAwareType> = Key.create("gradle.current.project")
val artifactsClosure: GroovyClosurePattern = groovyClosure().inMethod(
psiMethod(GRADLE_API_PROJECT, "artifacts")
).inMethodResult(object : PatternCondition<GroovyMethodResult>("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)
)
@@ -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<GradleProjectAwareType> = Key.create("gradle.current.project")
val saveProjectType: PatternCondition<GroovyMethodResult> = object : PatternCondition<GroovyMethodResult>("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<Boolean> = Key.create("gradle.delegated.type")