diff options
author | aclement <aclement> | 2006-04-19 12:52:14 +0000 |
---|---|---|
committer | aclement <aclement> | 2006-04-19 12:52:14 +0000 |
commit | edcb418c39b11e244cf70c9c68bc98419bdf8921 (patch) | |
tree | 75e7295de0875f8a6886af05abe2562d005889e6 | |
parent | f05e07fbdd07acc31c7c49b595da0fe3d32f0c79 (diff) | |
download | aspectj-edcb418c39b11e244cf70c9c68bc98419bdf8921.tar.gz aspectj-edcb418c39b11e244cf70c9c68bc98419bdf8921.zip |
fix for 137479: better isSynthetic() logic
-rw-r--r-- | weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java b/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java index f055002f9..3a8b01c4b 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java @@ -199,9 +199,11 @@ public class BcelTypeMunger extends ConcreteTypeMunger { if (!superMethod.getName().equals("<init>")) { LazyMethodGen subMethod = findMatchingMethod(newParentTarget, superMethod); if (subMethod!=null && !subMethod.isBridgeMethod()) { // FIXME asc is this safe for all bridge methods? - cont = enforceDecpRule3_visibilityChanges(weaver, newParent, superMethod, subMethod) && cont; - cont = enforceDecpRule4_compatibleReturnTypes(weaver, superMethod, subMethod) && cont; - cont = enforceDecpRule5_cantChangeFromStaticToNonstatic(weaver,munger.getSourceLocation(),superMethod,subMethod) && cont; + if (!(subMethod.isSynthetic() && superMethod.isSynthetic())) { + cont = enforceDecpRule3_visibilityChanges(weaver, newParent, superMethod, subMethod) && cont; + cont = enforceDecpRule4_compatibleReturnTypes(weaver, superMethod, subMethod) && cont; + cont = enforceDecpRule5_cantChangeFromStaticToNonstatic(weaver,munger.getSourceLocation(),superMethod,subMethod) && cont; + } } } } |