aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--weaver/src/org/aspectj/weaver/patterns/AnnotationPointcut.java16
1 files changed, 13 insertions, 3 deletions
diff --git a/weaver/src/org/aspectj/weaver/patterns/AnnotationPointcut.java b/weaver/src/org/aspectj/weaver/patterns/AnnotationPointcut.java
index 2de0e2228..8ea4fac0c 100644
--- a/weaver/src/org/aspectj/weaver/patterns/AnnotationPointcut.java
+++ b/weaver/src/org/aspectj/weaver/patterns/AnnotationPointcut.java
@@ -105,9 +105,9 @@ public class AnnotationPointcut extends NameBindingPointcut {
Shadow.Kind kind = shadow.getKind();
if (kind == Shadow.StaticInitialization) {
- toMatchAgainst = rMember.getType();
+ toMatchAgainst = rMember.getDeclaringType().resolve(shadow.getIWorld());
} else if ( (kind == Shadow.ExceptionHandler)) {
- toMatchAgainst = TypeX.forName(rMember.getSignature()).resolve(shadow.getIWorld());
+ toMatchAgainst = rMember.getParameterTypes()[0].resolve(shadow.getIWorld());
} else {
toMatchAgainst = rMember;
}
@@ -149,7 +149,17 @@ public class AnnotationPointcut extends NameBindingPointcut {
protected Test findResidueInternal(Shadow shadow, ExposedState state) {
if (shadow.getKind()!=Shadow.MethodCall &&
- shadow.getKind()!=Shadow.MethodExecution) {
+ shadow.getKind()!=Shadow.ConstructorCall &&
+ shadow.getKind()!=Shadow.ConstructorExecution &&
+ shadow.getKind()!=Shadow.MethodExecution &&
+ shadow.getKind()!=Shadow.FieldSet &&
+ shadow.getKind()!=Shadow.FieldGet &&
+ shadow.getKind()!=Shadow.StaticInitialization &&
+ shadow.getKind()!=Shadow.PreInitialization &&
+ shadow.getKind()!=Shadow.AdviceExecution &&
+ shadow.getKind()!=Shadow.Initialization &&
+ shadow.getKind()!=Shadow.ExceptionHandler
+ ) {
IMessage lim = MessageUtil.error("Binding not supported in @pcds (1.5.0 M2 limitation) for "+shadow.getKind()+" join points, see: " +
getSourceLocation());
shadow.getIWorld().getMessageHandler().handleMessage(lim);