diff options
author | aclement <aclement> | 2008-01-25 19:01:37 +0000 |
---|---|---|
committer | aclement <aclement> | 2008-01-25 19:01:37 +0000 |
commit | f082e49ea87ebb70a18f75b1b0da34286f24051b (patch) | |
tree | 6e43a4fe967d4412ea8829ceb5892e5a3b435fd8 | |
parent | 4e0b5cfc0317bca6a487dc11c61cb26eb3adeb8d (diff) | |
download | aspectj-f082e49ea87ebb70a18f75b1b0da34286f24051b.tar.gz aspectj-f082e49ea87ebb70a18f75b1b0da34286f24051b.zip |
paramannos: implementation!
-rw-r--r-- | weaver/src/org/aspectj/weaver/patterns/SignaturePattern.java | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/weaver/src/org/aspectj/weaver/patterns/SignaturePattern.java b/weaver/src/org/aspectj/weaver/patterns/SignaturePattern.java index b31287e77..7318344c8 100644 --- a/weaver/src/org/aspectj/weaver/patterns/SignaturePattern.java +++ b/weaver/src/org/aspectj/weaver/patterns/SignaturePattern.java @@ -382,7 +382,9 @@ public class SignaturePattern extends PatternNode { } if (!parameterTypes.canMatchSignatureWithNParameters(aMethod.getParameterTypes().length)) return FuzzyBoolean.NO; ResolvedType[] resolvedParameters = world.resolve(aMethod.getParameterTypes()); - if (!parameterTypes.matches(resolvedParameters, TypePattern.STATIC).alwaysTrue()) { + ResolvedType[][] parameterAnnotationTypes = aMethod.getParameterAnnotationTypes(); + if (parameterAnnotationTypes==null || parameterAnnotationTypes.length==0) parameterAnnotationTypes=null; + if (!parameterTypes.matches(resolvedParameters, TypePattern.STATIC,parameterAnnotationTypes).alwaysTrue()) { // It could still be a match based on the generic sig parameter types of a parameterized type if (!parameterTypes.matches(world.resolve(aMethod.getGenericParameterTypes()),TypePattern.STATIC).alwaysTrue()) { return FuzzyBoolean.MAYBE; @@ -398,6 +400,8 @@ public class SignaturePattern extends PatternNode { return FuzzyBoolean.YES; } + + /** * match on declaring type, parameter types, throws types */ @@ -406,7 +410,12 @@ public class SignaturePattern extends PatternNode { if (!parameterTypes.canMatchSignatureWithNParameters(aConstructor.getParameterTypes().length)) return FuzzyBoolean.NO; ResolvedType[] resolvedParameters = world.resolve(aConstructor.getParameterTypes()); - if (!parameterTypes.matches(resolvedParameters, TypePattern.STATIC).alwaysTrue()) { + + ResolvedType[][] parameterAnnotationTypes = aConstructor.getParameterAnnotationTypes(); + + if (parameterAnnotationTypes==null || parameterAnnotationTypes.length==0) parameterAnnotationTypes=null; + + if (!parameterTypes.matches(resolvedParameters, TypePattern.STATIC,parameterAnnotationTypes).alwaysTrue()) { // It could still be a match based on the generic sig parameter types of a parameterized type if (!parameterTypes.matches(world.resolve(aConstructor.getGenericParameterTypes()),TypePattern.STATIC).alwaysTrue()) { return FuzzyBoolean.MAYBE; |