From f092ea4fad5c722fdb380c367bb333a518797538 Mon Sep 17 00:00:00 2001 From: Maxim Medvedev Date: Sun, 31 Jan 2010 17:57:47 +0300 Subject: [PATCH] IDEA-51929: Passing empty list to super Groovy constructor gives wrong incompatibility warning --- .../lang/psi/impl/statements/expressions/TypesUtil.java | 11 +++++++++++ .../jetbrains/plugins/groovy/lang/GroovyHighlightingTest.java | 2 ++ .../testdata/highlighting/EmptyTupleAssignability.groovy | 11 +++++++++++ 3 files changed, 24 insertions(+) create mode 100644 plugins/groovy/testdata/highlighting/EmptyTupleAssignability.groovy diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/TypesUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/TypesUtil.java index a38f846f50..6e474a6636 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/TypesUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/TypesUtil.java @@ -219,6 +219,17 @@ public class TypesUtil { public static boolean isAssignableByMethodCallConversion(PsiType lType, PsiType rType, PsiManager manager, GlobalSearchScope scope) { if (lType == null || rType == null) return false; + if (rType instanceof GrTupleType) { + final GrTupleType tuple = (GrTupleType)rType; + if (tuple.getComponentTypes().length == 0) { + if (lType instanceof PsiArrayType || + InheritanceUtil.isInheritor(lType, JAVA_UTIL_LIST) || + InheritanceUtil.isInheritor(lType, JAVA_UTIL_SET)) { + return true; + } + } + } + if (rType.equalsToText(GrStringUtil.GROOVY_LANG_GSTRING)) { final PsiClass javaLangString = JavaPsiFacade.getInstance(manager.getProject()).findClass(JAVA_LANG_STRING, scope); if (javaLangString != null && diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyHighlightingTest.java b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyHighlightingTest.java index 4a4e834853..51de8c847d 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyHighlightingTest.java +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyHighlightingTest.java @@ -207,4 +207,6 @@ public class GroovyHighlightingTest extends LightCodeInsightFixtureTestCase { public void testArrayLikeAccess() throws Exception {doTest();} public void testSetInitializing() throws Exception {doTest();} + + public void testEmptyTupleAssignability() throws Exception {doTest();} } \ No newline at end of file diff --git a/plugins/groovy/testdata/highlighting/EmptyTupleAssignability.groovy b/plugins/groovy/testdata/highlighting/EmptyTupleAssignability.groovy new file mode 100644 index 0000000000..f3aa4ba3f8 --- /dev/null +++ b/plugins/groovy/testdata/highlighting/EmptyTupleAssignability.groovy @@ -0,0 +1,11 @@ +class Foo { + Foo(List l) { + + } +} + +class Bar extends Foo { + def Bar() { + super([]) + } +} \ No newline at end of file -- 2.11.4.GIT