June 30, 2004
It seems that the compiler pretty much ignores the "abstract" keyword, and makes a method abstract if and only if there's no body, and a class abstract if and only if it has abstract methods (inherited or otherwise).

This is probably almost acceptable for methods, I'm not fussed on whether "abstract" is required or not, but if given then it should be an error for a method to have a body (different from current behaviour).

If abstract is given to a class, it should be abstract, and therefore instantiating it should be an error (different from current behaviour).
If a class is NOT marked as abstract, and has abstract methods (inherited or otherwise), this should be an error, and the error message should identify the unimplemented methods (different from current behaviour, which is to silently make the class abstract, and error when you try to instantiate it).

Sam