Things to do and cosmetic bugs, in no particular order
-----------------------------------------------------------------

Find a way to print the class name during runtime errors when classes
are included in one another.

Fix precondition locations so they don't point to the routine header.

Make sure bound errors point to calling location.

Mangle such that routine names still appear for long class names.

-warn flag to warn about shadowing attribute names by locals.

mbk wants stable/unstable sets, with checking on/off as a set,
and grouping of generated C files.

Remove snowballing $OB errors.

Add inclusion info to impls.

Custom GC - psather needs it.

-object code strings version

Some macintosh environments work better with -I directives in the
makefile instead of relative paths.

In lieu of a correct GC, arrange for SFILE_IDs to be odd to avoid
blacklisting problem in the Boehm GC.

Do something about FLT::nil et al.  IEEE says NaNs can't be compared,
but this behavior is used in (for example) FSET{FLTD}.  No easy
solution.  IEEE sucks.

The single matching branch optimization only works for locals of
concrete type, but could be extended to work for abstract types too.

This message:

    The interface of type X_EVENT doesn't have a signature conforming to
    $X_EVENT::send_event(BOOL) in its parent $X_EVENT.

doesn't give any useful source locations.

After the custom GC, a "-portable" option that puts everything needed
(runtime.c etc.) in the source directory so that it can be easily run
elsewhere.

Generated C files should be organized by module rather than by class.
(Modules weren't available when this was first done.)

Statements of the form

    a.b:=c;  -- turns into a.b(c)

should get a special, more helpful message if a is a value type, since
this seems to often be a point of confusion.

Perhaps the compiler should issue a warning if a public routine in the
class is accessed from within `invariant'; if it is doing so it is a
infinite recursive loop.


