]> source.dussan.org Git - aspectj.git/commitdiff
386888: always attempt to use generics in comparison
authorAndy Clement <andrew.clement@gmail.com>
Mon, 27 Aug 2012 17:34:39 +0000 (10:34 -0700)
committerAndy Clement <andrew.clement@gmail.com>
Mon, 27 Aug 2012 17:34:39 +0000 (10:34 -0700)
org.aspectj.matcher/src/org/aspectj/weaver/ResolvedType.java

index ace82bca58e13d6a6a141676d56b3a778b8bec52..b9fe12a3e02f239d27f106e65d583ef933ff5455 100644 (file)
@@ -1977,8 +1977,7 @@ public abstract class ResolvedType extends UnresolvedType implements AnnotatedEl
         *         an additional source location.
         */
        public boolean checkLegalOverride(ResolvedMember parent, ResolvedMember child, int transformerPosition, ResolvedType aspectType) {
-               // System.err.println("check: " + child.getDeclaringType() +
-               // " overrides " + parent.getDeclaringType());
+               // System.err.println("check: " + child.getDeclaringType() + " overrides " + parent.getDeclaringType());
                if (Modifier.isFinal(parent.getModifiers())) {
                        // If the ITD matching is occurring due to pulling in a BinaryTypeBinding then this check can incorrectly
                        // signal an error because the ITD transformer being examined here will exactly match the member it added
@@ -1993,10 +1992,8 @@ public abstract class ResolvedType extends UnresolvedType implements AnnotatedEl
                                        List<ConcreteTypeMunger> transformersOnThisType = wsi.getTypeMungers(nonItdDeclaringType);
                                        if (transformersOnThisType != null) {
                                                for (ConcreteTypeMunger transformer : transformersOnThisType) {
-                                                       // relatively crude check - is the ITD
-                                                       // for the same as the existingmember
-                                                       // and does it come
-                                                       // from the same aspect
+                                                       // relatively crude check - is the ITD for the same as the existingmember
+                                                       // and does it come from the same aspect
                                                        if (transformer.aspectType.equals(aspectType)) {
                                                                if (parent.equalsApartFromDeclaringType(transformer.getSignature())) {
                                                                        return true;
@@ -2027,7 +2024,10 @@ public abstract class ResolvedType extends UnresolvedType implements AnnotatedEl
                        // !rtParentReturnType.isAssignableFrom(rtChildReturnType);
                        // }
                } else {
-                       incompatibleReturnTypes = !parent.getReturnType().equals(child.getReturnType());
+                       ResolvedType rtParentReturnType = parent.resolve(world).getGenericReturnType().resolve(world);
+                       ResolvedType rtChildReturnType = child.resolve(world).getGenericReturnType().resolve(world);
+                       
+                       incompatibleReturnTypes = !rtParentReturnType.equals(rtChildReturnType);
                }
 
                if (incompatibleReturnTypes) {