type inference for closures in groovy1.8
[idea/community.git] / plugins / groovy / src / org / jetbrains / plugins / groovy / lang / resolve / ResolveUtil.java
index 4603d529bacc93636b8e3b003919e119e2bb7a60..722d5388964bf9a2f118ae43fe0e24e6cc2c4b38 100644 (file)
@@ -520,7 +520,10 @@ public class ResolveUtil {
   }
 
   public static boolean isInUseScope(GroovyResolveResult resolveResult) {
-    final GroovyPsiElement context = resolveResult.getCurrentFileResolveContext();
+    return isInUseScope(resolveResult.getCurrentFileResolveContext());
+  }
+
+  public static boolean isInUseScope(GroovyPsiElement context) {
     if (context instanceof GrMethodCall) {
       final GrExpression expression = ((GrMethodCall)context).getInvokedExpression();
       if (expression instanceof GrReferenceExpression) {
@@ -532,4 +535,20 @@ public class ResolveUtil {
     }
     return false;
   }
+
+  public static boolean isInWithContext(GroovyPsiElement context) {
+    if (context instanceof GrExpression) {
+      final PsiElement parent = context.getParent();
+      if (parent instanceof GrReferenceExpression && ((GrReferenceExpression)parent).getQualifier() == context) {
+        final PsiElement pparent = parent.getParent();
+        if (pparent instanceof GrMethodCall) {
+          final PsiMethod method = ((GrMethodCall)pparent).resolveMethod();
+          if (method instanceof GrGdkMethod && "with".equals(method.getName())) {
+            return true;
+          }
+        }
+      }
+    }
+    return false;
+  }
 }