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 <[email protected]>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 <[email protected]> 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
>> [email protected]
>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>
>>
>
> _______________________________________________
> aspectj-users mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to