Browse Source

386888: always attempt to use generics in comparison

tags/V1_7_1
Andy Clement 11 years ago
parent
commit
024de8c654
1 changed files with 7 additions and 7 deletions
  1. 7
    7
      org.aspectj.matcher/src/org/aspectj/weaver/ResolvedType.java

+ 7
- 7
org.aspectj.matcher/src/org/aspectj/weaver/ResolvedType.java View File

* an additional source location. * an additional source location.
*/ */
public boolean checkLegalOverride(ResolvedMember parent, ResolvedMember child, int transformerPosition, ResolvedType aspectType) { 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 (Modifier.isFinal(parent.getModifiers())) {
// If the ITD matching is occurring due to pulling in a BinaryTypeBinding then this check can incorrectly // 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 // signal an error because the ITD transformer being examined here will exactly match the member it added
List<ConcreteTypeMunger> transformersOnThisType = wsi.getTypeMungers(nonItdDeclaringType); List<ConcreteTypeMunger> transformersOnThisType = wsi.getTypeMungers(nonItdDeclaringType);
if (transformersOnThisType != null) { if (transformersOnThisType != null) {
for (ConcreteTypeMunger transformer : transformersOnThisType) { 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 (transformer.aspectType.equals(aspectType)) {
if (parent.equalsApartFromDeclaringType(transformer.getSignature())) { if (parent.equalsApartFromDeclaringType(transformer.getSignature())) {
return true; return true;
// !rtParentReturnType.isAssignableFrom(rtChildReturnType); // !rtParentReturnType.isAssignableFrom(rtChildReturnType);
// } // }
} else { } 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) { if (incompatibleReturnTypes) {

Loading…
Cancel
Save