I haven't spent toooo long thinking about it, but I don't think you can at the moment. We don't really have the capabilities to introspect the class hierarchy to that level of detail.
Some made up syntaxes: If 'Object+' indicates subtypes, let's add a numeric to indicate distance: declare error: within(Object+2): "Type does not directly extend object"; // maybe add the type category type pattern too: within(is(ClassType) && Object+2) declare error: within(Object+>2): "Type does not directly extend object"; More direct: declare error within(!extends(Object)): "Type does not directly extend object"; // if 'extends' is strictly looking at the declared type and not the inheritance chain. You could probably cause an error if you tried to use declare parents extends with a simple type because extends will report an error if the new type doesn't have the same parent as the existing type: class Foo1 {} class Foo2 extends ArrayList {} class Marker {} aspect X { declare parents: Foo* extends Marker; } will give an error ... but it isn't as simple as a nice message saying 'type Foo2 doesn't directly extend Object.' cheers, Andy On 16 August 2012 08:40, Matthew Adams <matt...@matthewadams.me> wrote: > Just for fun, I was trying to think of how to use declare error to prevent > the use of class inheritance in user code, but I can't think of how to do > that. > > Basically, if you wanted to disallow the declaration of classes that extend > anything other than Object, is there a "declare error" form that would work? > > -matthew > > -- > mailto:matt...@matthewadams.me > skype:matthewadams12 > googletalk:matt...@matthewadams.me > http://matthewadams.me > http://www.linkedin.com/in/matthewadams > > > _______________________________________________ > aspectj-users mailing list > aspectj-users@eclipse.org > https://dev.eclipse.org/mailman/listinfo/aspectj-users > _______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org https://dev.eclipse.org/mailman/listinfo/aspectj-users