diff options
author | Andy Clement <aclement@gopivotal.com> | 2014-06-19 16:40:17 -0700 |
---|---|---|
committer | Andy Clement <aclement@gopivotal.com> | 2014-06-19 16:40:17 -0700 |
commit | 2974cc303e8a3cc331378dbbe85951eb3a05a6ad (patch) | |
tree | 1b8398a24c823519a6cce7ff5126bb7aca596811 /weaver | |
parent | 3c2b8b77881c721b5c274db939a30bcb3130a401 (diff) | |
download | aspectj-bug433351.tar.gz aspectj-bug433351.zip |
work in progressbug433351
Diffstat (limited to 'weaver')
-rw-r--r-- | weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java | 10 |
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(); |