Advice calling protected super method causing java.lang.VerifyError 'Bad access to protected data'
Also expanded test to cover protected field access as well as methods
Fix required getting the correct receiver type for both field access and method
calls to correspond to Java's complicated rules for accessing protected
members (JLSv2 6.6.2 and mentioned in passing in JVMv2 5.4.4)
Better binary compatibility for advice method names
- I've run the tests a thousand times and they all pass, I'm still nervous about this first big commit though *gulp*
declaring interface methods should work as it does in interface
and Bugzilla Bug 45676
AspectJ enhanced code can not be used with plain old java anymo
and Bugzilla Bug 43972
Static crosscutting makes interfaces unusable for javac
binary aspect-declared methods conflict, lost their exception clauses
larger fix to address more issues with aspect-declared methods in bytecode form
also addressed declared exception issue more generally
this fix should be more stable than a smaller hack that just fixed this specific bug
report would have been. added a few tests to match increased scope.
ClassFormatError on external subtype-qualified ref to supertype pointcut
This was an important bug that was caused by the static fields used in the implementation of cflow being placed on the wrong class. This broke the rules used for name mangling and could occasionally result in name collisions as shown here.
based on patch contributed by Andy Clement
Generalizes the patch with a method org.aspectj.weaver.bcel.Utility.copyInstruction
that works-around the bug in Select.copy(). Changed all calls to
Instruction.copy() to use this new method, would be nice to add the
rule:
* declare error:
* call(* Instruction.copy()) && within(org.aspectj.weaver)
* && !withincode(* Utility.copyInstruction(Instruction)):
* "use Utility.copyInstruction to work-around bug in Select.copy()";