Done items, moved from TODO list. DATE FILE(S) DESCRIPTION =============================================================================== 1may97 where.c Finished generic instantiation of unions. Turned out to be trivial, given that unions are identical to tuples except for type tag name. Hence, generic instantiation of unions just calls the existing InstantiateRecordType. 1may97 typechk.c Fixed problem that caused inherited union not to type check properly, in the following circumstance: obj Y is a:A or b:B or c:C; obj Y1 < Y var y:Y, y1:Y1; y.a (* OK *) y1.a (* Erroneously reported error that a was not a tag of y1 *) The problem was just a flat-out logic bug that had never been tested because a subclassed union had never been in the test data. Here are the specifics: The following logic in chkRecordOrUnionRef if (onetuple) { lerror(t, "%s %s", fname, errmsg2); return null; } was replaced by this logic if (onetuple) and ((not desig) or /*NEW*/ (not isTupleOrUnion(desig)))) { /*NEW*/ lerror(t, "%s %s", fname, errmsg2); return null; } It appears to work now, but the logic is pretty convoluted. It is doubtful that anything will ever be done about it. 16jun95 parser.y, Allow an attr value to be an expr in addition to a OTHERS comment and ident list. Though ident is a subcase of expr, it should still be distinguished semantically in that it defines a relational attribute. 27oct94 parser.y Eliminate the much unused feature that op sigs can contain (unnested) uses of 'and' and '*'. NOT! We're leaning again towards sturctural equivalence, so we wont do this. NOT NOT!! Screw struct equiv, we leave op sigs as is since unnested '*' means varargs, and 'and' can just be the same as ',', which with auto-implosion of actuals is actually truish. NOT NOT NOT!! We should unify comp exprs and op sigs completely. 29nov94 typechk.c Allow a single, bundled list value as a match for a single-list-arity op.