summaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authorAndy Clement <aclement@gopivotal.com>2014-06-19 16:40:17 -0700
committerAndy Clement <aclement@gopivotal.com>2014-06-19 16:40:17 -0700
commit2974cc303e8a3cc331378dbbe85951eb3a05a6ad (patch)
tree1b8398a24c823519a6cce7ff5126bb7aca596811 /weaver
parent3c2b8b77881c721b5c274db939a30bcb3130a401 (diff)
downloadaspectj-bug433351.tar.gz
aspectj-bug433351.zip
work in progressbug433351
Diffstat (limited to 'weaver')
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java10
1 files changed, 9 insertions, 1 deletions
diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java b/weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java
index 815becde0..ee232d082 100644
--- a/weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java
+++ b/weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java
@@ -1297,6 +1297,10 @@ public class BcelWeaver {
// resolve it if the caller could not pass in the resolved type
resolvedTypeToWeave = world.resolve(typeToWeave);
}
+// if (resolvedTypeToWeave.isTypeHierarchyComplete()) {
+// typesForWeaving.remove(typeToWeave);
+// return;
+// }
ResolvedType superclassType = resolvedTypeToWeave.getSuperclass();
String superclassTypename = (superclassType == null ? null : superclassType.getName());
@@ -1319,7 +1323,11 @@ public class BcelWeaver {
}
ContextToken tok = CompilationAndWeavingContext.enteringPhase(CompilationAndWeavingContext.PROCESSING_DECLARE_PARENTS,
resolvedTypeToWeave.getName());
- weaveParentTypeMungers(resolvedTypeToWeave);
+ // If A was processed before B (and was declared 'class A implements B') then there is no need to complete B again, it
+ // will have been done whilst processing A.
+ if (!resolvedTypeToWeave.isTypeHierarchyComplete()) {
+ weaveParentTypeMungers(resolvedTypeToWeave);
+ }
CompilationAndWeavingContext.leavingPhase(tok);
typesForWeaving.remove(typeToWeave);
resolvedTypeToWeave.tagAsTypeHierarchyComplete();