Inconsistent behavior weaving generic abstract classes

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Inconsistent behavior weaving generic abstract classes

Jonathan Mace
I'm getting different behavior when weaving classes depending on my platform -- a compilation error when building on Linux, but successful compilation on Mac.


To reproduce, build with maven (mvn clean package).  The tests should pass.  For me they pass on Mac and fail on Linux.

The reason for failure is as follows: the class hierarchy is such that an intermediary abstract class should be woven to implement a new interface.  The abstract class successfully has the interface added.  However, on Linux, the method implementations are not added, whereas on Mac they are.

I've tried this on multiple versions of AspectJ (1.6.12, 1.7.3, 1.8.7, 1.8.9) and Java (1.7 Oracle and OpenJDK)

_______________________________________________
aspectj-users mailing list
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users
Reply | Threaded
Open this post in threaded view
|

Re: Inconsistent behavior weaving generic abstract classes

Andy Clement
Have you raised an issue on bugzilla for this?  My initial guess it is an ordering problem - and the order the files are passed to the compiler is varying across OS just due to a difference in how we end up iterating over collections. That ordering difference is allowed but it is some combination that hasn't been tested and doesn't work. So you could feasibly recreate it on any OS if you knew the order the files were being processed in the failing case. 

cheers,
Andy

On 5 December 2016 at 19:25, Jonathan Mace <[hidden email]> wrote:
I'm getting different behavior when weaving classes depending on my platform -- a compilation error when building on Linux, but successful compilation on Mac.


To reproduce, build with maven (mvn clean package).  The tests should pass.  For me they pass on Mac and fail on Linux.

The reason for failure is as follows: the class hierarchy is such that an intermediary abstract class should be woven to implement a new interface.  The abstract class successfully has the interface added.  However, on Linux, the method implementations are not added, whereas on Mac they are.

I've tried this on multiple versions of AspectJ (1.6.12, 1.7.3, 1.8.7, 1.8.9) and Java (1.7 Oracle and OpenJDK)

_______________________________________________
aspectj-users mailing list
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users


_______________________________________________
aspectj-users mailing list
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users