You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2015/06/28 12:04:27 UTC

incubator-groovy git commit: GROOVY-7477: CompileStatic-related "BUG! exception in phase 'instruction selection'"

Repository: incubator-groovy
Updated Branches:
  refs/heads/master f70235e07 -> 6cf1ee0ad


GROOVY-7477: CompileStatic-related "BUG! exception in phase 'instruction selection'"


Project: http://git-wip-us.apache.org/repos/asf/incubator-groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-groovy/commit/6cf1ee0a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-groovy/tree/6cf1ee0a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-groovy/diff/6cf1ee0a

Branch: refs/heads/master
Commit: 6cf1ee0adbf3e1b33f42ffb2afa4b5f31a06bff7
Parents: f70235e
Author: Paul King <pa...@asert.com.au>
Authored: Sat Jun 27 11:01:35 2015 +1000
Committer: Paul King <pa...@asert.com.au>
Committed: Sun Jun 28 20:03:56 2015 +1000

----------------------------------------------------------------------
 .../groovy/transform/stc/StaticTypeCheckingSupport.java  |  2 +-
 src/test/groovy/transform/stc/BugsSTCTest.groovy         | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/6cf1ee0a/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java b/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
index 2955bdd..c82bcba 100644
--- a/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
+++ b/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
@@ -1599,7 +1599,7 @@ public abstract class StaticTypeCheckingSupport {
      */
     static void extractGenericsConnections(Map<String, GenericsType> connections, ClassNode type, ClassNode target) {
         if (target==null || type==target || !isUsingGenericsOrIsArrayUsingGenerics(target)) return;
-        if (type==UNKNOWN_PARAMETER_TYPE) return;
+        if (type == null || type==UNKNOWN_PARAMETER_TYPE) return;
         if (type.isArray() && target.isArray()) {
             extractGenericsConnections(connections, type.getComponentType(), target.getComponentType());
         } else if (target.isGenericsPlaceHolder() || type.equals(target) || !implementsInterfaceOrIsSubclassOf(type, target)) {

http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/6cf1ee0a/src/test/groovy/transform/stc/BugsSTCTest.groovy
----------------------------------------------------------------------
diff --git a/src/test/groovy/transform/stc/BugsSTCTest.groovy b/src/test/groovy/transform/stc/BugsSTCTest.groovy
index 432d865..2962e39 100644
--- a/src/test/groovy/transform/stc/BugsSTCTest.groovy
+++ b/src/test/groovy/transform/stc/BugsSTCTest.groovy
@@ -135,6 +135,17 @@ class BugsSTCTest extends StaticTypeCheckingTestCase {
         '''
     }
 
+    void testGroovy7477NullGenericsType() {
+        assertScript '''
+        class L<E> extends ArrayList<E> {
+            boolean removeIf(Comparator<? super E> filter) { }
+        }
+        L<String> items = ['foo', 'bar'] as L<String>
+        items.removeIf({a, b -> 1} as Comparator<?>)
+        assert items
+        '''
+    }
+
     void testGroovy5482ListsAndFlowTyping() {
         assertScript '''
         class StaticGroovy2 {