aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraclement <aclement>2004-02-26 10:00:31 +0000
committeraclement <aclement>2004-02-26 10:00:31 +0000
commit75ce009e27c754b669d8949342a3c2e15c197db4 (patch)
tree2aa5bad53665a5a0a522760b0d810a0493dfb770
parentc803296169a0a171fed9c889aeea130a30381b0d (diff)
downloadaspectj-75ce009e27c754b669d8949342a3c2e15c197db4.tar.gz
aspectj-75ce009e27c754b669d8949342a3c2e15c197db4.zip
Fix for preventing the use of if/target/this/args/cflow/cflowbelow in DeclareSofts.
(Reordered flow in creating declare soft munger and concretizing the pointcut)
-rw-r--r--weaver/src/org/aspectj/weaver/CrosscuttingMembers.java6
1 files changed, 4 insertions, 2 deletions
diff --git a/weaver/src/org/aspectj/weaver/CrosscuttingMembers.java b/weaver/src/org/aspectj/weaver/CrosscuttingMembers.java
index 0992fef89..62ba60412 100644
--- a/weaver/src/org/aspectj/weaver/CrosscuttingMembers.java
+++ b/weaver/src/org/aspectj/weaver/CrosscuttingMembers.java
@@ -108,9 +108,11 @@ public class CrosscuttingMembers {
declareParents.add(dp);
} else if (declare instanceof DeclareSoft) {
DeclareSoft d = (DeclareSoft)declare;
- Pointcut concretePointcut = d.getPointcut().concretize(inAspect, 0);
+ // Ordered so that during concretization we can check the related munger
+ ShadowMunger m = Advice.makeSoftener(world, d.getPointcut(), d.getException(),inAspect);
+ Pointcut concretePointcut = d.getPointcut().concretize(inAspect, 0,m);
+ m.pointcut = concretePointcut;
declareSofts.add(new DeclareSoft(d.getException(), concretePointcut));
- ShadowMunger m = Advice.makeSoftener(world, concretePointcut, d.getException(),inAspect);
addConcreteShadowMunger(m);
} else {
throw new RuntimeException("unimplemented");