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() {