From a2ee54012175d904070fa49d30ca3b6418ec18a4 Mon Sep 17 00:00:00 2001 From: Maxim Medvedev Date: Tue, 6 Jul 2010 18:12:26 +0400 Subject: [PATCH] closure type assignability --- .../plugins/groovy/gpp/GppTypeConverter.java | 25 +++++++------------ 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/plugins/groovy/groovypp/src/org/jetbrains/plugins/groovy/gpp/GppTypeConverter.java b/plugins/groovy/groovypp/src/org/jetbrains/plugins/groovy/gpp/GppTypeConverter.java index 88b9f1963582..3390514092de 100644 --- a/plugins/groovy/groovypp/src/org/jetbrains/plugins/groovy/gpp/GppTypeConverter.java +++ b/plugins/groovy/groovypp/src/org/jetbrains/plugins/groovy/gpp/GppTypeConverter.java @@ -66,21 +66,18 @@ public class GppTypeConverter extends GrTypeConverter { public Boolean isConvertible(@NotNull PsiType lType, @NotNull PsiType rType, @NotNull GroovyPsiElement context) { if (rType instanceof GrTupleType) { final PsiType type = PsiUtil.extractIterableTypeParameter(lType, false); - if (type != null && !TypesUtil.isAssignable(type, ((GrTupleType)rType).getParameters()[0], context)) { - return null; - } - final PsiType[] componentTypes = ((GrTupleType)rType).getComponentTypes(); + if (type == null || TypesUtil.isAssignable(type, ((GrTupleType)rType).getParameters()[0], context)) { + final PsiType[] componentTypes = ((GrTupleType)rType).getComponentTypes(); - final PsiType expectedComponent = PsiUtil.extractIterableTypeParameter(lType, false); - if (expectedComponent != null && hasDefaultConstructor(lType)) { - return true; - } + final PsiType expectedComponent = PsiUtil.extractIterableTypeParameter(lType, false); + if (expectedComponent != null && hasDefaultConstructor(lType)) { + return true; + } - if (lType instanceof PsiClassType && hasConstructor((PsiClassType)lType, componentTypes, context)) { - return true; + if (lType instanceof PsiClassType && hasConstructor((PsiClassType)lType, componentTypes, context)) { + return true; + } } - - return null; } else if (rType instanceof GrMapType) { final PsiType lKeyType = PsiUtil.substituteTypeParameter(lType, CommonClassNames.JAVA_UTIL_MAP, 0, false); @@ -94,8 +91,6 @@ public class GppTypeConverter extends GrTypeConverter { if (hasDefaultConstructor(lType)) { return true; } - - return null; } else if (rType instanceof GrClosureType) { final PsiType[] methodParameters = GppClosureParameterTypeProvider.findSingleAbstractMethodSignature(lType); @@ -103,10 +98,8 @@ public class GppTypeConverter extends GrTypeConverter { if (methodParameters != null && GrClosureSignatureUtil.isSignatureApplicable(signature, methodParameters, context)) { return true; } - return false; } - return null; }