From ca378fdb002a8bf509f10388d02d0e423f210fcc Mon Sep 17 00:00:00 2001 From: acolyer Date: Fri, 29 Jul 2005 11:16:01 +0000 Subject: [PATCH] consider the true (generic signature) type of a field when matching "return type". --- .../org/aspectj/weaver/patterns/SignaturePattern.java | 10 ++++++++-- 1 file 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(); -- 2.39.5