From 0669cf647f677054b5742d1979c67d87e120ff38 Mon Sep 17 00:00:00 2001 From: Gilles Dubochet Date: Fri, 16 Dec 2005 18:48:00 +0000 Subject: 'TODO' files moves to 'docs'. --- docs/TODO | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 docs/TODO (limited to 'docs/TODO') diff --git a/docs/TODO b/docs/TODO new file mode 100644 index 0000000000..cd36f7c518 --- /dev/null +++ b/docs/TODO @@ -0,0 +1,91 @@ +//###########################################################-*-outline-*-#### +// TODO list +//############################################################################ +// $Id$ + +* Histories + + Requires: - + + Create a class "History" that can be used to store a phase + dependent value of type "X". We can then have TypeHistories, + FlagHistories, ClosureHistories, ... + + Currently only symbols may contain phase dependent values. For that + reason we sometimes create symbols just because we need a phase + dependent type (for example the thisTypeSym). And sometimes we don't + have phase dependent values where we should (for example lobound in + AbsTypeSymbol or flags in Symbol) + + Once we have histories, it is possible to add one or several + phase-dependent values to every symbol (and also to other data + types). + + The two base operations of class "History" are "getValueAt(Phase)" + and "setValueAt(Phase)". There are two kinds of histories: those + that may only return values already set and those that trigger the + evaluation of values not yet set (=> lazy types). + + +* Remove the notion of primary constructor. + + Requires: Histories + + In case of abstract types and type aliases, the sole purpose of the + primary constructor is to store the type parameters. These type + parameters can be stored in a type parameters history. + + In case of class types, the primary constructor stores the type and + value parameters of the class and it defines a valid instance + constructor. As for abstract types and type aliases, the type and + value parameters can be stored in parameters histories and the + instance constructor defined be the primary constructor can be + replaced by a normal constructor. + + +* Remove symbols from MethodTypes and PolyTypes + + Requires: Histories, Primary constructor removal + + The symbols of the value parameters of methods are currently stored + in their type in "MethodType" types. These symbols can be stored in + a new parameters history of class "TermSymbol". The array of symbols + in the "MethodType" type can then be replaced by an array of types. + + The process is about the same for symbols in PolyTypes. The main + difference is that type parameters may be referenced and thus we + need something like De Bruijn indicies to represent these + references. + + +* Scopes with history + + Requires: - + + Implement scopes that maintain a validity phase interval for each of + its member. Members may then only be added to scopes. Removing is + replaced by terminating the validity interval. + + +* Implement a type IntervalType(Type,Type) + + Requires: - + + A type IntervalType(Type,Type) specifies an upper and a lower + bound. This type can be used to replace the loBound field in class + AbsTypeSymbol. It makes it possible to merge classes TypeAliasSymbol + and AbsTypeSymbol into one single class whose info is either a + TypeRef for type aliases or an IntervalType for abstract types. + + +* Solve refinement problem. + + Requires: Histories, Scopes with history, IntervalTypes + + Replace the current type CompoundType(Type[],Scope) by the new types + CompoundType(Type[]) and RefinementType(Type,Map) and + add a Scope field in class ClassSymbol. + + Replace the symbol in compound types by a closure history. + +//############################################################################ -- cgit v1.2.3