Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Declare parents on interfaces - changed from 1.6 to 1.7

Hi Andy,

Thanks for the quick reply.  I've put together a test case and filed a bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=433351

In the process, I discovered that the key factor is the structure of the jar on the inpath.  For example, if I have a package abc.def, with class ghi, and in the jar I have the usual structure  /abc/def/ghi.class, the interface declare parents is not applied by AspectJ 1.7+.  If I then change the jar structure to /any/other/folders/abc.def/ghi.class, the ITD *is* applied.  A class declare parents is applied in either case.  Anyway, hopefully the test case makes that clear.

Regards
Jaime


On Thu, Apr 24, 2014 at 1:56 AM, Andy Clement <andrew.clement@xxxxxxxxx> wrote:
Hey,

Nothing was deliberately changed to affect this specific scenario but one thing that was heavily overhauled was how we walk over the type hierarchy when doing analysis, to try and reduce the amount of extraneous garbage produced during analysis. But IIRC that was done around 1.6.7 - but if you are saying it still fails in later 1.6 releases, maybe that isn't it.

If you raise a bug with a minimal test case I'll take a look.

cheers,
Andy


On 23 April 2014 04:56, Jaime Metcher <jmetcher@xxxxxxxxx> wrote:
Hi All,

I have an aspect with these two ITDs:

 declare parents: IBaseInterface extends ISuperInterface;
 declare parents: BaseClass extends SuperClass;

The first one is setting a super-interface, the second a superclass.  Not sure if it matters, but BaseClass implements IBaseInterface and SuperClass implements ISuperInterface.

BaseClass and IBaseInterface are in a jar on the inpath.  SuperClass and ISuperInterface are in the sourceroots.

Using AspectJ 1.6.x, this works fine.  From 1.7.0 upwards, the first declare parents that extends the interface is simply ignored.  The second  that adds the superclass one is applied.

UNLESS remove the inpath and just add all the sources to the sourceroots.  Then it works.

So: 1.6, I can extend an interface that is supplied via the inpath; 1.7+, no dice.  Question is - did something change with declare parents in 1.7?

I have added verbosity and lint until I'm blue in the face, and it's as if the ITD simply doesn't exist.  I've checked the change list for 1.7.  And I've tested on versions 1.6.6, 1.6.10, 1.6.12, 1.7.0, 1.7.3, 1.7.4 and 1.8.0.  JDK 1.6 and sourcelevel 1.6 in all cases.

Given that I've spent all day troubleshooting this, I don't really want to throw away more time trying to create a test case if there's someone out there who will go "Oh, yeah, we rewrote module blah in 1.7".

Thanks in advance for any glimmers.

Jaime



_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users



_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users



Back to the top