aboutsummaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authoracolyer <acolyer>2006-05-03 06:35:37 +0000
committeracolyer <acolyer>2006-05-03 06:35:37 +0000
commit63653d29e9e09ad69a8f4b43431f0d29242c08b6 (patch)
tree8a575a6b438aae78b87648693b0375acf188da20 /weaver
parent18c308fb3c26227f7cae5ad728d3565079edd4b5 (diff)
downloadaspectj-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.java8
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(),