Community
Participate
Working Groups
The following code snippet triggers the problem private String ( FSWhatIfCdsProcessor || FSCdsVersionManagerImpl).cdsIdentity; private String ( FSWhatIfCdsProcessor || FSCdsVersionManagerImpl).getIdentity() { return cdsIdentity;} As a workaround we have to duplicate the declaration for all types in the or expression.
In AspectJ-1.1 we made this change to clarify the typing of the body of an inter-type declaration. This is documented in the release notes at http://dev.eclipse.org/viewcvs/indextech.cgi/~checkout~/aspectj- home/doc/README-11.html#SINGLE_INTERCLASS_TARGET The suggested design in 1.1 is to use a marker interface if you want to put the same set of code on multiple classes, i.e. interface HasIdentity {} declare parents: FSWhatIfCdsProcessor || FSCdsVersionManagerImpl: HasIdentity; private String HasIdentity.cdsIdentity; private String HasIdentity.getIdentity() { return cdsIdentity;} We believe this change will lead to cleaner code in the long run and don't intend to go back to the old design. If this doesn't work for you, please raise the issue on the aspectj-users discussion list.