namespace A { typedef here = int; int good(A) { return 1; } int f() { return 1; } int v; badtype badtypefunc(); // ERROR () badtypemethod(badtype); // ERROR badtype badtypevar; // ERROR () badthing A); // ERROR } namespace C { } A a; badtype b; // ERROR C c; // ERROR () test() { /* ERRORS */ a->f; a->v(); int c = a->f; a->""(); a->notfound(); notfound->x(); a->badtypefunc(); a->badtypevar(); bool->bad(); bool:true->bad(); a->->good(); a->.good(); a->:good(); badtype x = a->good(); c->notfound(); a->good:(); a->good():; a->good:here(); a->123(); // Errors should be reported somewhere else a->badtypemethod(); a->badthing(); b->notfound(); }