summaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authoracolyer <acolyer>2005-07-29 11:16:01 +0000
committeracolyer <acolyer>2005-07-29 11:16:01 +0000
commitca378fdb002a8bf509f10388d02d0e423f210fcc (patch)
treeb6e99feb3e26b72ebc4d6106856775147070cb53 /weaver
parent671f51b147ed947a954916be80ea7343ff1205c5 (diff)
downloadaspectj-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.java10
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();