Bug 231478

Summary: Generic aspects and changing bounds in a hierarchy
Product: [Tools] AspectJ Reporter: Andrew Clement <aclement>
Component: CompilerAssignee: aspectj inbox <aspectj-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3    
Version: unspecified   
Target Milestone: 1.6.1   
Hardware: PC   
OS: Windows Vista   
Whiteboard:

Description Andrew Clement CLA 2008-05-11 19:42:32 EDT
abstract aspect A<T extends One> {}
abstract aspect B<Q extends Two> extends A<Q> {}
(where Two extends One) currently fails to compile.

See mailing list post:
Hello,
 
First of all, I know this is not possible, as it says on the manual page.. but I was wondering why..
In plain Java you can redefine the upperbound of a type parameter, i.e.:
 
class AbstractComponent<C extends Component> {}
class AbstractWindow<W extends Window> extends AbstractComponent<W> {}
 
Now.. trying the same thing with aspects.. does not work:
 
abstract aspect AbstractComponentA<C extends Component> {}
abstract aspect AbstractWindowA<W extends Window> extends AbstractComponentA<W> {}
 
So.. my question, why isn't this supported? And what would be the "best" workaround?
 
Thanks in advance,
Mark
Comment 1 Andrew Clement CLA 2008-05-11 22:01:36 EDT
fix committed