diff options
author | Gilles Dubochet <gilles.dubochet@epfl.ch> | 2005-12-16 18:48:00 +0000 |
---|---|---|
committer | Gilles Dubochet <gilles.dubochet@epfl.ch> | 2005-12-16 18:48:00 +0000 |
commit | 0669cf647f677054b5742d1979c67d87e120ff38 (patch) | |
tree | 4110ad95fe5642ade22f6fbe796e792a2e5e08e9 /docs | |
parent | 53a3cc7b17f4cf97075b7e71720777fd84109696 (diff) | |
download | scala-0669cf647f677054b5742d1979c67d87e120ff38.tar.gz scala-0669cf647f677054b5742d1979c67d87e120ff38.tar.bz2 scala-0669cf647f677054b5742d1979c67d87e120ff38.zip |
'TODO' files moves to 'docs'.
Diffstat (limited to 'docs')
-rw-r--r-- | docs/TODO | 91 |
1 files changed, 91 insertions, 0 deletions
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<X>" 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<Symbol,Type>) and + add a Scope field in class ClassSymbol. + + Replace the symbol in compound types by a closure history. + +//############################################################################ |