From 3e005b327f7604debd1d3cecae7a8e639cbf6326 Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Mon, 17 Dec 2018 21:20:21 +0300 Subject: [PATCH] [gradle] get delegate for closure from method return type instead of invoked expression type --- .../java/src/service/resolve/GradleMiscContributor.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/plugins/gradle/java/src/service/resolve/GradleMiscContributor.kt b/plugins/gradle/java/src/service/resolve/GradleMiscContributor.kt index 81eeb7aaecfa..e1d842c014b4 100644 --- a/plugins/gradle/java/src/service/resolve/GradleMiscContributor.kt +++ b/plugins/gradle/java/src/service/resolve/GradleMiscContributor.kt @@ -2,7 +2,10 @@ package org.jetbrains.plugins.gradle.service.resolve import com.intellij.patterns.PsiJavaPatterns.psiElement -import com.intellij.psi.* +import com.intellij.psi.JavaPsiFacade +import com.intellij.psi.PsiClass +import com.intellij.psi.PsiElement +import com.intellij.psi.ResolveState import com.intellij.psi.scope.PsiScopeProcessor import groovy.lang.Closure import org.jetbrains.plugins.gradle.service.resolve.GradleCommonClassNames.* @@ -68,9 +71,8 @@ class GradleMiscContributor : GradleMethodContextContributor { // resolve closure type to delegate based on return method type, e.g. // FlatDirectoryArtifactRepository flatDir(Closure configureClosure) if (parent is GrMethodCall) { - val psiType = parent.invokedExpression.type - if (psiType != null && psiType != PsiType.VOID) { - return DelegatesToInfo(psiType, Closure.DELEGATE_FIRST) + parent.resolveMethod()?.returnType?.let { type -> + return DelegatesToInfo(type, Closure.DELEGATE_FIRST) } } return null