*** empty log message ***
[mono.git] / mcs / mcs / TODO
1 * Ordering
2
3         Can a constant_expression invoke overloaded operators?
4         Explicit user-defined conversions?
5
6 * Visibility
7
8         I am not reporting errors on visibility yet.
9
10 * Error handling
11
12         Normalize, and use Tokenizer location 
13
14 * Enumerations
15
16         Currently I am not resolving enumerations.
17
18         Either I track them with `RecordEnum' as I do with classes,
19         structs and interfaces or I rewrite the code to visit type
20         containers and `walk' the enums with this process. 
21
22 * Known problems:
23
24   Cast expressions
25
26         They should should use:
27
28                 OPEN_PARENS type CLOSE_PARENS
29
30         instead of the current production which is wrong, because it
31         only handles a few cases.
32
33         Complex casts like:
34
35                 Array r = (string []) object
36
37         Wont be parsed.
38   
39 * Interfaces
40
41         For indexers, the output of ix2.cs is different from our
42         compiler and theirs.  They use a DefaultMemberAttribute, which
43         I have yet to figure out:
44
45         .class interface private abstract auto ansi INTERFACE
46         {
47                 .custom instance void [mscorlib]System.Reflection.DefaultMemberAttribute::.ctor(string) 
48                 = ( 01 00 04 49 74 65 6D 00 00 )                      // ...Item..
49                 ...
50         }
51
52 * Interface indexers
53
54         I have not figured out why the Microsoft version puts an
55         `instance' attribute, and I am not generating this `instance' attribute.
56
57 * Constructors
58
59         Currently it calls the parent constructor before initializing fields.
60         It should do it the other way around.
61
62 * Use of EmitBranchable
63
64         Currently I use brfalse/brtrue in the code for statements, instead of
65         using the EmitBranchable function that lives in Binary
66
67 * Create an UnimplementedExpcetion
68
69         And use that instead of plain Exceptions.
70
71 * ConvertImplicit
72
73         Currently ConvertImplicit will not catch things like:
74
75         - IntLiteral in a float context to generate a -FloatLiteral.
76         Instead it will perform an integer load followed by a conversion.
77
78 * In class.cs: Method.Define
79
80         Need to use FindMembers to lookup the member for reporting
81         whether a new is needed or not.  
82
83 * virtual-method.cs breaks
84
85         It breaks on the call to: new B ();
86
87         Where B is a class defined in the source code, my guess is that
88         the look for ".ctor" fails
89
90
91
92