The todo list. DATE FILE(S) DESCRIPTION =============================================================================== 10jul96 lex.l, others Fix line number inaccuracy in error message reporting. In particular, see the problem with the syntax error message for tests/wierd-exprs.rsl. There are evidently other error message reporting problems there, in that it appears that only the first of several syntax errors is reported. Anyway, look into it. 31oct95 typechk.c Implement chkLambda and make all of the should-be type checking happen in newtests/lambda.rsl. Such type checking includes, if I'm not mistaken, finishing the checking that the return value yielded by an op body, including a begin block, is compat with the declared coarity of the op. parser.y Implement trees while and return. Implement type typechk.c checking for all of the executable exprs that are not yet implemented. typechk.c Rethink if we really want to disallow a var of the same name as an op -- we probably still do, but think about it. 20aug95 typechk.c Once and for all, fix the type checking of concrete obj defs. E.g., the following def yields a type value of nil for Name, which is obviously wrong: type Name = string; What should happen, I believe, is that string should be bitched about as a non-value. While we're at it, we should get this whole concrete value crap straigtened out, again, once and for all. 18aug95 typechk.c The 17aug95 problem has been (inadvertently) fixed. 17aug95 typechk.c The imple of one-tuples seems to have been (quite) successful. One little nagging thing is still there. Viz., when a type is defined as a one-tuple of an undef'd ident type, the type so def'd does not itself go undef'd. E.g., see newtests/one-tuple-problem.rsl. 11aug95 several Think about op overloading. In particular, consider that overloading of '.' is probably no allowable, since it appears to be a fexpr (see newtests/rsl-val.rsl). Hmm, this could get interesting 11aug95 typechk.c Fix the lack of compat between some cases of named and unnamed list types. E.g., see newtests/list-screw-up.rsl. 11aug95 sym-aux.c In EnterOperation, change the use of MakeNameList to a similar (new) function MakeArgList. The purpose of this change is to allow the default constructor op to be easily created from its corresponding obj decl. Specifically, MakeNameList only handles AND'd bin ops in the given tree. What we want to do in MakeArgList is to handle an entire parts_spec tree, including OR'd binops. See implementation-ideas for more info. 16jun95 parser.y, Implement the new import/export rules as described in sym-aux.*, rsl3/doc/implementation-ideas. OTHERS 28oct94 parser-aux.c, Have FindAttr return the *entire* name/value pair, not parser.y, just the value. This is necessary for more accurate others error message reporting. Specifically, we need to use the line of the pre/post decl keyword, rather than that of the expr tree, which often turns out to be near the end of the expr itself, given the left-heavy expr trees that are built. lex.l, Scrutinize character positions in src locs and typechk.c, subsequent error messages to ensure accuracy. See more others recent version of Mod-2 interp for improvments in src loc handling, including proper line number counting in multi-file inputs. 30oct94 typechk.c Fix suchthat clause bug. sym-aux.* ALLOW OVERLOADING. typechk.* others 31oct94 many It's becoming clear that we need an intermediate type checking pass. I.e., we need to go to three passes. The latest discovery that points in this direction is the confirmation of non-duplicate overloaded ops. typechk.c Issure warning if op used in its own pre- or postcond. 1nov94 sym-aux.c Handle '*' in op sigs. typechk.c others 1nov94 typechk.c Limit the number of varargs inputs to one. 9nov94 typechk.c Complain if non-distinct types in a union. ref-man.me Explain that names are necessary in any context where one wants/needs to refer to a component in an expr. typechk.c Make stuff in tests/more-generics.rsl work. 13nov94 ref-man.me Add index. Add section on defining BNF in RSL (see tests/bnf.rsl for starters). Fix discussions of bottoming out in the obj hierarchy on strings to sym lits, and discuss diff between strings and symlits. Viz., all strings lits are of type string, whereas each symlit is its own separate type. 18nov94 typechk.c chkListConstructor to return a list type with base type that is the *highest* of any of the elem types. Probably change the whole deal so that even more than assmntCompat is used. Rather, use siblingCompat. typechk.c Implement built-in, polymorphic constructor ops for each obj, where such ops have same name as the obj, and take type-specific parms. 21nov94 typechk.c Make *DARN* sure that there is not a copying problem with the use of the components.type.origname field. Viz., can ResloveIdentType safely resuse this field, or should it be making copies of type nodes? 23nov94 seb/more- Fix the bogus "Actual parameter list does not match cocrete- ..." error message on line 73. file-ops.rsl 27nov94 typechk.c Disallow instances of built-in types. 28nov94 typechk.c Add case for operation composition in BuildCompType1. It will have basically the same code as the Mod-2 function chkProcType, q.v. 30nov94 typechk.c Resolve new-style let expr in 2nd pass. NOT NECESSARY after all. 30nov94 typechk.c Settle on solution to "loose let" problem. Likely: make expr_seq's scopes. 1dec94 rsl3/tests/ Check this out and come to a decision about concrete dan-lawyers- objects as values, specifically his decl of jj on line and-judges.rsl 15, and subsequent (erroneous) uses of jj. 1dec94 ref-man.me Figure out and then explain how to represent start-up values, as in the default menu in Biggie Burger. The idea this far has been, it seems, to specify such values with concrete objects as default parms to ops. This may well be fine, but we do need to make it perfectly clear. 1dec94 typechk.c Type check op bodies. 1dec94 typechk.c Warn on applicative use of let. 1dec94 parser.y and Allow backquote (or some other suitable notation as elsewhere short-hand for enum lit. 1dec94 parser.y Compare with old/parser-pre-obj_name-change.y and see about putting obj_name back where it used to be. Issue is where all symlits are legal syntactically. Are they just another kind of ident, in fact? 3dec94 parser.y Merge in new code for placement of op instance of. 7dec94 refman.me Add section on common pitfalls, for people like Pascal and C programmers. Quick list of such includes: * op O(i,j:integer) != op O(i:integer, j:integer); * no single-elem tuples -- fake it with x and ; * a=b and c=d parses as a=(b and c)=d, which is rarely if ever what is desired 5jan94 typechk.c Complain if the name of a parent op class is overloaded.