2010-01-12 Zoltan Varga <vargaz@gmail.com>
[mcs.git] / mcs / PLAN
blobdc8324c3d51f72a4599f665d9362b911eb38bc5e
1 Clean Up
2 --------
4         Move MapVariable from CodeGen into Block?
6 Improve test:
8         Necesitamos que a-capture8.cs pruebe si la asignacion funciona o no.
10 Audit:
12         Al emitir instancias de variables
13         (EmitCaptureVariableInstance) parece ser que el loop de iteracion:
15         while (si.ScopeBlock.ID != li.Block.ID)
17         está mas actulizado que el codigo similar para parámetros, es posible
18         que sea bitrot de parámetros o que en los parámetros usamos otra estrategia
19         (lo segundo es más razonable).
20         
21 Iteradores:
23         En algún lugar no pongo el `FieldBuilder' a un valor con los
24         iteradores, ver expression.cs: 3616, local_info.FieldBuilder es nulo.
26 Parameters:
28         a-parameter4.cs falla por que no se liga el método anónimo
29         anidado con el padre.
31 Cleanup:
33                         CaptureContext cc = ContextForParameter (ec.CurrentBlock.Toplevel, name);
34                         if (cc != this){
35                                 cc.EmitParameter (ec, name);
36                                 return;
37                         }
39         That should be a static method, and call the instance method
40         in the right CaptureContext, instead of having the CaptureContext
41         compute that itself.
43 MakePinned is gone:
45         Need to audit the code now that use DeclareLocal, and that this uses
46         a differnent code path than the main mcs.
48 Need to fix the order in which types are closed: currently we are not
49 compatible with the MS requirement that the parent has to be created
50 before the children are.
52 Tests and pending features:
54         Switch statement is broken (because it uses ILGenerator during
55         the Resolve phase, which with the `anonymous' branch is no longer
56         the case: so we have to delay the creation of labels until they 
57         are needed, during the Emit phase).
59 Validation:
61         For testing, set ec.IG == null during resolve, restore value
62         for emit.
64         Currently it is commented out: there is a bug in the
65         statement.cs changes (see the old-statement.cs, the compiler
66         fails during bootstrap)