diff options
-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"); |