Fixes for Java compilations:
[mono.git] / mcs / mcs / TODO
index 03d691e99ab7e161eb28cad68b36469a7ceb7b94..741e63d2ab8cd6201491913c3bda9e15d599fee2 100644 (file)
@@ -1,12 +1,37 @@
+Iterators
+=========
+
+
+       Ok, solved part of the problem, but not the second.
+
+       Apparently there are 2 scopes in test-iter-05.cs that
+       are referenced, but when we call "ComputeMethodHost" in
+       iterators.cs:854 this information is not yet available.
+
+===========================================
+
+* Value Parameter
+
+       I believe that `Value Parameter' might have been introduced
+       after C# 1.0, also notice than in the treatment of Value Parameter
+       the parameters are defined in four categories:
+
+       Section 9.3 in the latest spec.
+
+
+Large project:
+--------------
+
 New
 ---
 
-       When invoked by `Assign' on a value type, it knows the address where
-       it will be stored.
+       It would be nice to optimize the case of:
+
+               Method (new ValueType ())
 
-       In any other place value types do not need a local variable, so
-       we could probably just do an `initobj' and leave the result *on the stack*
-       as an argument.
+       So that no temporary is created, and we only use a newobj call
+       that remains on the stack, as opposed to ldloca, initobj, ldloc
+       call.
 
 NEW NOTES:
 ----------
@@ -23,24 +48,6 @@ NEW NOTES:
                        if (expr_type == target_type)
                                return true;
 
-
-Null Type
----------
-
-       Need to introduce the NullType concept into the compiler, to address a 
-       few small buglets and remove the hardcoded values for NullLiteral.
-
-       NullLiteral will be the only expression that has the NullType as its type.
-
-       This is what must be used to test for Null literals, instead of `is NullLiteral',
-       and this will introduce a couple of fixes to the rules.
-
-       Revert Martin's patch to Conditional expression that worked around this bug:
-
-               Reference r = xx ? null : null
-
-       The right fix is to introduce NullType
-
 ****************************************************************************************
 * 
 *   The information on the rest of this file is mostly outdated, and its kept here for
@@ -109,17 +116,6 @@ DeclareLocal audit
 
        This is required to fix foreach in iterators.
 
-Large project:
---------------
-
-       Drop FindMembers as our API and instead extract all the data
-       out of a type the first time into our own datastructures, and
-       use that to navigate and search the type instead of the
-       callback based FindMembers.     
-
-       Martin has some some of this work with his TypeHandle code
-       that we could use for this.
-
 Ideas:
 ------
 
@@ -247,3 +243,13 @@ RECOMMENDATIONS
        { oob_stack.Push (lexer.Location) } takes a "slot"  in the productions.
 
 
+* Anonymous Methods
+===================
+
+In EmitAnonymousHelperClasses we set the "NeedThis" parameter of all
+the roots, but this is not necessary.  We should track the
+"HaveCapturedFields" on a per-ScopeInfo basis, and only set the
+HaveCapturedFields on the proper roots, instead of all the roots.
+
+
+