diff options
author | aclement <aclement> | 2004-02-26 10:00:31 +0000 |
---|---|---|
committer | aclement <aclement> | 2004-02-26 10:00:31 +0000 |
commit | 75ce009e27c754b669d8949342a3c2e15c197db4 (patch) | |
tree | 2aa5bad53665a5a0a522760b0d810a0493dfb770 | |
parent | c803296169a0a171fed9c889aeea130a30381b0d (diff) | |
download | aspectj-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.java | 6 |
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"); |