Two things make a class abstract.

One is that it has methods that a subclass must override � that is captured by #hasAbstractMethods.

The other is that the class cannot be instantiated � normally because it has overridden new.
It can be the case that an abstract class defines only CONCRETE methods for its subclasses, but still is abstract.  So, it seems to me that #isAbstractClass is not subsumed by #hasAbstractMethods.

A trait "AbstactClassT" could define #new to be "self error: 'Class ' , self name , ' is abstract and cannot be instantiated'" and #isAbstractClass to be ^ true. 

Andrew


On Sun, Dec 16, 2012 at 11:03 PM, St�phane Ducasse
<stephane.ducasse@inria.fr> wrote:
Good suggestion I will change it to hasAbstractMethods it looks much better.
Tx for the suggestion.

what about 'additionalAbstractMethods' that would return the list of
new abstract methods the class  defines.