summaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authoracolyer <acolyer>2005-12-13 22:19:08 +0000
committeracolyer <acolyer>2005-12-13 22:19:08 +0000
commitb7929e91659708dc27141f587ad236af7bfa8287 (patch)
tree4ab9a88305479e154a499077ef4978fe7d33242d /weaver
parente50bf403b26657b4b39a6be0e34b7170dbc788a9 (diff)
downloadaspectj-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.java32
-rw-r--r--weaver/testsrc/org/aspectj/weaver/patterns/SignaturePatternTestCase.java6
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);