diff options
author | acolyer <acolyer> | 2006-05-03 06:35:37 +0000 |
---|---|---|
committer | acolyer <acolyer> | 2006-05-03 06:35:37 +0000 |
commit | 63653d29e9e09ad69a8f4b43431f0d29242c08b6 (patch) | |
tree | 8a575a6b438aae78b87648693b0375acf188da20 /weaver | |
parent | 18c308fb3c26227f7cae5ad728d3565079edd4b5 (diff) | |
download | aspectj-63653d29e9e09ad69a8f4b43431f0d29242c08b6.tar.gz aspectj-63653d29e9e09ad69a8f4b43431f0d29242c08b6.zip |
enabled test and committed fix for pr139749 : super call in around advice body of @AspectJ aspect
Diffstat (limited to 'weaver')
-rw-r--r-- | weaver/src/org/aspectj/weaver/bcel/BcelAccessForInlineMunger.java | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelAccessForInlineMunger.java b/weaver/src/org/aspectj/weaver/bcel/BcelAccessForInlineMunger.java index a772df25d..35456fe8d 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelAccessForInlineMunger.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelAccessForInlineMunger.java @@ -165,8 +165,12 @@ public class BcelAccessForInlineMunger extends BcelTypeMunger { realizedCannotInline = true; } else { // specific handling for super.foo() calls, where foo is non public - if (aspectType.getSuperclass() != null - && aspectType.getSuperclass().getName().equals(callee.getName())) { + ResolvedType memberType = m_aspectGen.getWorld().resolve(resolvedMember.getDeclaringType()); + if (!aspectType.equals(memberType) && + memberType.isAssignableFrom(aspectType)) { + // old test was... + // if (aspectType.getSuperclass() != null + // && aspectType.getSuperclass().getName().equals(resolvedMember.getDeclaringType().getName())) { ResolvedMember accessor = createOrGetInlineAccessorForSuperDispatch(resolvedMember); InvokeInstruction newInst = factory.createInvoke( aspectType.getName(), |