diff options
author | acolyer <acolyer> | 2005-12-13 22:19:08 +0000 |
---|---|---|
committer | acolyer <acolyer> | 2005-12-13 22:19:08 +0000 |
commit | b7929e91659708dc27141f587ad236af7bfa8287 (patch) | |
tree | 4ab9a88305479e154a499077ef4978fe7d33242d /weaver | |
parent | e50bf403b26657b4b39a6be0e34b7170dbc788a9 (diff) | |
download | aspectj-b7929e91659708dc27141f587ad236af7bfa8287.tar.gz aspectj-b7929e91659708dc27141f587ad236af7bfa8287.zip |
tests and fix for pr119749
Diffstat (limited to 'weaver')
-rw-r--r-- | weaver/src/org/aspectj/weaver/patterns/SignaturePattern.java | 32 | ||||
-rw-r--r-- | weaver/testsrc/org/aspectj/weaver/patterns/SignaturePatternTestCase.java | 6 |
2 files changed, 22 insertions, 16 deletions
diff --git a/weaver/src/org/aspectj/weaver/patterns/SignaturePattern.java b/weaver/src/org/aspectj/weaver/patterns/SignaturePattern.java index 3759d12d7..445cc53a1 100644 --- a/weaver/src/org/aspectj/weaver/patterns/SignaturePattern.java +++ b/weaver/src/org/aspectj/weaver/patterns/SignaturePattern.java @@ -305,24 +305,30 @@ public class SignaturePattern extends PatternNode { return FuzzyBoolean.MAYBE; } + // modifiers match on the *subject* if (!modifiers.matches(aMember.getModifiers())) { - if (aMember.isPrivate()) return FuzzyBoolean.NO; - else return FuzzyBoolean.MAYBE; + return FuzzyBoolean.NO; +// if (aMember.isPrivate()) return FuzzyBoolean.NO; +// else return FuzzyBoolean.MAYBE; + } + + // annotations match on the *subject* + if (!matchesAnnotations(aMember,inAWorld).alwaysTrue()) { + return FuzzyBoolean.NO; } - FuzzyBoolean matchesIgnoringAnnotations = FuzzyBoolean.YES; if (kind == Member.STATIC_INITIALIZATION) { - matchesIgnoringAnnotations = matchesExactlyStaticInitialization(aMember, inAWorld); + return matchesExactlyStaticInitialization(aMember, inAWorld); } else if (kind == Member.FIELD) { - matchesIgnoringAnnotations = matchesExactlyField(aMember,inAWorld); + return matchesExactlyField(aMember,inAWorld); } else if (kind == Member.METHOD) { - matchesIgnoringAnnotations = matchesExactlyMethod(aMember,inAWorld); + return matchesExactlyMethod(aMember,inAWorld); } else if (kind == Member.CONSTRUCTOR) { - matchesIgnoringAnnotations = matchesExactlyConstructor(aMember, inAWorld); + return matchesExactlyConstructor(aMember, inAWorld); + } else { + return FuzzyBoolean.YES; } - if (!matchesIgnoringAnnotations.alwaysTrue()) return matchesIgnoringAnnotations; - return matchesAnnotations(aMember, inAWorld); } /** @@ -357,6 +363,9 @@ public class SignaturePattern extends PatternNode { */ private FuzzyBoolean matchesExactlyMethod(JoinPointSignature aMethod, World world) { if (!name.matches(aMethod.getName())) return FuzzyBoolean.NO; + // Check the throws pattern + if (!throwsPattern.matches(aMethod.getExceptions(), world)) return FuzzyBoolean.NO; + if (!declaringType.matchesStatically(aMethod.getDeclaringType().resolve(world))) return FuzzyBoolean.MAYBE; if (!returnType.matchesStatically(aMethod.getReturnType().resolve(world))) { // looking bad, but there might be parameterization to consider... @@ -379,9 +388,6 @@ public class SignaturePattern extends PatternNode { // check that varargs specifications match if (!matchesVarArgs(aMethod,world)) return FuzzyBoolean.MAYBE; - // Check the throws pattern - if (!throwsPattern.matches(aMethod.getExceptions(), world)) return FuzzyBoolean.MAYBE; - // passed all the guards.. return FuzzyBoolean.YES; } @@ -477,7 +483,7 @@ public class SignaturePattern extends PatternNode { if (annotationPattern.matches(member).alwaysTrue()) { return FuzzyBoolean.YES; } else { - return FuzzyBoolean.MAYBE; // need to look at ancestor members too... + return FuzzyBoolean.NO; // do NOT look at ancestor members... } } diff --git a/weaver/testsrc/org/aspectj/weaver/patterns/SignaturePatternTestCase.java b/weaver/testsrc/org/aspectj/weaver/patterns/SignaturePatternTestCase.java index 935d3c262..40d345316 100644 --- a/weaver/testsrc/org/aspectj/weaver/patterns/SignaturePatternTestCase.java +++ b/weaver/testsrc/org/aspectj/weaver/patterns/SignaturePatternTestCase.java @@ -38,8 +38,8 @@ public class SignaturePatternTestCase extends TestCase { Member mOnDerived = MemberImpl.methodFromString("void fluffy.Derived.m()"); checkMatch(makeMethodPat("* fluffy.Base.*(..) throws java.lang.CloneNotSupportedException"), - new Member[] { mOnBase, mOnDerived }, - new Member[] { }); + new Member[] { mOnBase }, + new Member[] { mOnDerived }); checkMatch(makeMethodPat("* fluffy.Derived.*(..) throws java.lang.CloneNotSupportedException"), new Member[] { }, @@ -53,7 +53,7 @@ public class SignaturePatternTestCase extends TestCase { checkMatch(makeMethodPat("* *(..)"), M, NONE); checkMatch(makeMethodPat("* *(..) throws !*"), NO_EXCEPTIONS, M); - checkMatch(makeMethodPat("* *(..) throws *"), BOTH, NONE); + checkMatch(makeMethodPat("* *(..) throws *"), M, NO_EXCEPTIONS); checkMatch(makeMethodPat("* *(..) throws *, !*"), NONE, BOTH); checkMatch(makeMethodPat("* *(..) throws (!*)"), NONE, BOTH); |