You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by bl...@apache.org on 2015/07/09 17:57:43 UTC

[1/3] incubator-groovy git commit: fix innerclass name for JDK9

Repository: incubator-groovy
Updated Branches:
  refs/heads/master 5a7afe389 -> e106b78dc


fix innerclass name  for JDK9


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

Branch: refs/heads/master
Commit: d61f359f2cf67b8317f9e80cc62801f736ead48b
Parents: 5a7afe3
Author: Jochen Theodorou <bl...@gmx.org>
Authored: Thu Jul 9 09:10:37 2015 +0200
Committer: Jochen Theodorou <bl...@gmx.org>
Committed: Thu Jul 9 09:15:39 2015 +0200

----------------------------------------------------------------------
 src/main/org/codehaus/groovy/classgen/AsmClassGenerator.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/d61f359f/src/main/org/codehaus/groovy/classgen/AsmClassGenerator.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/classgen/AsmClassGenerator.java b/src/main/org/codehaus/groovy/classgen/AsmClassGenerator.java
index 2874f98..9e0986b 100644
--- a/src/main/org/codehaus/groovy/classgen/AsmClassGenerator.java
+++ b/src/main/org/codehaus/groovy/classgen/AsmClassGenerator.java
@@ -273,7 +273,7 @@ public class AsmClassGenerator extends ClassGenerator {
         if (enclosingMethod != null) {
             // local inner classes do not specify the outer class name
             outerClassName = null;
-            innerClassName = null;
+            if (innerClass.isAnonymous()) innerClassName = null;
         }
         int mods = adjustedClassModifiersForInnerClassTable(cn);
 


[2/3] incubator-groovy git commit: GROOVY-7495 disable covaraint return type mismatch message for bridge method generation of methods from super classes

Posted by bl...@apache.org.
GROOVY-7495 disable covaraint return type mismatch message for bridge method generation of methods from super classes


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

Branch: refs/heads/master
Commit: 724088834e5257d1b66422e585b5723fd64fffb0
Parents: d61f359
Author: Jochen Theodorou <bl...@gmx.org>
Authored: Thu Jul 9 09:13:25 2015 +0200
Committer: Jochen Theodorou <bl...@gmx.org>
Committed: Thu Jul 9 09:15:40 2015 +0200

----------------------------------------------------------------------
 .../org/codehaus/groovy/classgen/Verifier.java  | 13 +++++-----
 .../gls/invocation/CovariantReturnTest.groovy   | 26 ++++++++++++++++++++
 2 files changed, 33 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/72408883/src/main/org/codehaus/groovy/classgen/Verifier.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/classgen/Verifier.java b/src/main/org/codehaus/groovy/classgen/Verifier.java
index 362a190..e462d60 100644
--- a/src/main/org/codehaus/groovy/classgen/Verifier.java
+++ b/src/main/org/codehaus/groovy/classgen/Verifier.java
@@ -1249,14 +1249,14 @@ public class Verifier implements GroovyClassVisitor, Opcodes {
             for (Object declaredMethod : declaredMethods) {
                 MethodNode method = (MethodNode) declaredMethod;
                 if (method.isStatic()) continue;
-                storeMissingCovariantMethods(classMethods, method, methodsToAdd, genericsSpec);
+                storeMissingCovariantMethods(classMethods, method, methodsToAdd, genericsSpec, false);
             }
             // super class causing bridge methods for abstract methods in original class
             if (!abstractMethods.isEmpty()) {
                 for (Object classMethod : classMethods) {
                     MethodNode method = (MethodNode) classMethod;
                     if (method.isStatic()) continue;
-                    storeMissingCovariantMethods(abstractMethods.values(), method, methodsToAdd, Collections.EMPTY_MAP);
+                    storeMissingCovariantMethods(abstractMethods.values(), method, methodsToAdd, Collections.EMPTY_MAP, true);
                 }
             }
 
@@ -1270,14 +1270,14 @@ public class Verifier implements GroovyClassVisitor, Opcodes {
             for (Object declaredMethod : declaredMethods) {
                 MethodNode method = (MethodNode) declaredMethod;
                 if (method.isStatic()) continue;
-                storeMissingCovariantMethods(interfacesMethods, method, methodsToAdd, genericsSpec);
+                storeMissingCovariantMethods(interfacesMethods, method, methodsToAdd, genericsSpec, false);
             }
             addCovariantMethods(anInterface, declaredMethods, abstractMethods, methodsToAdd, genericsSpec);
         }
 
     }
 
-    private MethodNode getCovariantImplementation(final MethodNode oldMethod, final MethodNode overridingMethod, Map genericsSpec) {
+    private MethodNode getCovariantImplementation(final MethodNode oldMethod, final MethodNode overridingMethod, Map genericsSpec, boolean ignoreError) {
         // method name
         if (!oldMethod.getName().equals(overridingMethod.getName())) return null;
         if ((overridingMethod.getModifiers() & ACC_BRIDGE) != 0) return null;
@@ -1298,6 +1298,7 @@ public class Verifier implements GroovyClassVisitor, Opcodes {
 
         ClassNode testmr = correctToGenericsSpec(genericsSpec, omr);
         if (!isAssignable(mr, testmr)) {
+            if (ignoreError) return null;
             throw new RuntimeParserException(
                     "The return type of " +
                             overridingMethod.getTypeDescriptor() +
@@ -1415,10 +1416,10 @@ public class Verifier implements GroovyClassVisitor, Opcodes {
         return type.getPlainNodeReference();
     }
 
-    private void storeMissingCovariantMethods(Collection methods, MethodNode method, Map methodsToAdd, Map genericsSpec) {
+    private void storeMissingCovariantMethods(Collection methods, MethodNode method, Map methodsToAdd, Map genericsSpec, boolean ignoreError) {
         for (Object method1 : methods) {
             MethodNode toOverride = (MethodNode) method1;
-            MethodNode bridgeMethod = getCovariantImplementation(toOverride, method, genericsSpec);
+            MethodNode bridgeMethod = getCovariantImplementation(toOverride, method, genericsSpec, ignoreError);
             if (bridgeMethod == null) continue;
             methodsToAdd.put(bridgeMethod.getTypeDescriptor(), bridgeMethod);
             return;

http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/72408883/src/test/gls/invocation/CovariantReturnTest.groovy
----------------------------------------------------------------------
diff --git a/src/test/gls/invocation/CovariantReturnTest.groovy b/src/test/gls/invocation/CovariantReturnTest.groovy
index 9678615..44b8d97 100644
--- a/src/test/gls/invocation/CovariantReturnTest.groovy
+++ b/src/test/gls/invocation/CovariantReturnTest.groovy
@@ -180,6 +180,32 @@ public class CovariantReturnTest extends CompilableTestSupport {
         """
     }
 
+    //GROOVY-7495
+    void testCovariantMerhodReturnTypeFromParentInterface() {
+        shouldCompile """
+            interface Item {}
+            interface DerivedItem extends Item {}
+
+            interface Base {
+                Item getItem()
+            }
+            class BaseImpl implements Base {
+                Item getItem() { null }
+            }
+
+            interface First extends Base {
+                DerivedItem getItem()
+            }
+
+            class FirstImpl extends BaseImpl implements First {
+                DerivedItem getItem() { null }
+            }
+
+            interface Second extends First {}
+            class SecondImpl extends FirstImpl implements Second {}
+        """
+    }
+
     void testCovariantParameterType() {
         assertScript """
             class BaseA implements Comparable<BaseA> {


[3/3] incubator-groovy git commit: GROOVY-7495: additional test case

Posted by bl...@apache.org.
GROOVY-7495: additional test case


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

Branch: refs/heads/master
Commit: e106b78dc9414f9cd453c6154808feb3deac19ca
Parents: 7240888
Author: Jochen Theodorou <bl...@gmx.org>
Authored: Thu Jul 9 17:53:01 2015 +0200
Committer: Jochen Theodorou <bl...@gmx.org>
Committed: Thu Jul 9 17:53:01 2015 +0200

----------------------------------------------------------------------
 .../gls/invocation/CovariantReturnTest.groovy    | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/e106b78d/src/test/gls/invocation/CovariantReturnTest.groovy
----------------------------------------------------------------------
diff --git a/src/test/gls/invocation/CovariantReturnTest.groovy b/src/test/gls/invocation/CovariantReturnTest.groovy
index 44b8d97..9f6648d 100644
--- a/src/test/gls/invocation/CovariantReturnTest.groovy
+++ b/src/test/gls/invocation/CovariantReturnTest.groovy
@@ -204,6 +204,25 @@ public class CovariantReturnTest extends CompilableTestSupport {
             interface Second extends First {}
             class SecondImpl extends FirstImpl implements Second {}
         """
+        shouldCompile """
+            interface A {
+               B foo()
+            }
+            interface B {}
+            interface A2 extends A {
+               B2 foo()
+            }
+            interface B2 extends B {}
+
+            class AA implements A {
+               BB foo() { return new BB() }
+            }
+            class AA2 extends AA implements A2 {
+               BB2 foo() { return new BB2() }
+            }
+            class BB implements B {}
+            class BB2 extends BB implements B2 {}
+        """
     }
 
     void testCovariantParameterType() {