summaryrefslogtreecommitdiff
path: root/docs/TODO
diff options
context:
space:
mode:
authorGilles Dubochet <gilles.dubochet@epfl.ch>2005-12-16 18:48:00 +0000
committerGilles Dubochet <gilles.dubochet@epfl.ch>2005-12-16 18:48:00 +0000
commit0669cf647f677054b5742d1979c67d87e120ff38 (patch)
tree4110ad95fe5642ade22f6fbe796e792a2e5e08e9 /docs/TODO
parent53a3cc7b17f4cf97075b7e71720777fd84109696 (diff)
downloadscala-0669cf647f677054b5742d1979c67d87e120ff38.tar.gz
scala-0669cf647f677054b5742d1979c67d87e120ff38.tar.bz2
scala-0669cf647f677054b5742d1979c67d87e120ff38.zip
'TODO' files moves to 'docs'.
Diffstat (limited to 'docs/TODO')
-rw-r--r--docs/TODO91
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.
+
+//############################################################################