diff options
author | acolyer <acolyer> | 2005-07-29 11:16:01 +0000 |
---|---|---|
committer | acolyer <acolyer> | 2005-07-29 11:16:01 +0000 |
commit | ca378fdb002a8bf509f10388d02d0e423f210fcc (patch) | |
tree | b6e99feb3e26b72ebc4d6106856775147070cb53 /weaver | |
parent | 671f51b147ed947a954916be80ea7343ff1205c5 (diff) | |
download | aspectj-ca378fdb002a8bf509f10388d02d0e423f210fcc.tar.gz aspectj-ca378fdb002a8bf509f10388d02d0e423f210fcc.zip |
consider the true (generic signature) type of a field when matching "return type".
Diffstat (limited to 'weaver')
-rw-r--r-- | weaver/src/org/aspectj/weaver/patterns/SignaturePattern.java | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/weaver/src/org/aspectj/weaver/patterns/SignaturePattern.java b/weaver/src/org/aspectj/weaver/patterns/SignaturePattern.java index 9238caa41..3eb71653b 100644 --- a/weaver/src/org/aspectj/weaver/patterns/SignaturePattern.java +++ b/weaver/src/org/aspectj/weaver/patterns/SignaturePattern.java @@ -210,7 +210,13 @@ public class SignaturePattern extends PatternNode { return declaringType.matchesStatically(sig.getDeclaringType().resolve(world)); } else if (kind == Member.FIELD) { - if (!returnType.matchesStatically(sig.getReturnType().resolve(world))) return false; + if (!returnType.matchesStatically(sig.getReturnType().resolve(world))) { + // looking bad, but there might be parameterization to consider... + if (!returnType.matchesStatically(sig.getGenericReturnType().resolve(world))) { + // ok, it's bad. + return false; + } + } if (!name.matches(sig.getName())) return false; boolean ret = declaringTypeMatch(member.getDeclaringType(), member, world); //System.out.println(" ret: " + ret); @@ -485,7 +491,7 @@ public class SignaturePattern extends PatternNode { Class superType = onType; while(superType != null) { try { - Method m = (superType.getDeclaredMethod(memberName,paramTypes)); + superType.getDeclaredMethod(memberName,paramTypes); l.add(superType); } catch (NoSuchMethodException nsm) {} superType = superType.getSuperclass(); |