3 There is a mess right now between SimpleName,
4 ResolveMemberAccess and Invocation.
15 x.Prop.Prop.Prop.Prop.method ();
19 Are valid, and our current recursive-less implementation wont
22 We need to make sure that SimpleNames (which are a horrible
23 name, as they are really CompoundNames right now) will be remapped
24 to the propper MemberAccess after parsing.
26 * Reorganization: calling structure methods
28 Structure methods do not expect a `this' pointer, they expect
29 an address on the stack. We can probably use all the LValue members
34 struct A { void M ();}
35 class B { A Func () {}}
40 A temporary is created by the compiler to store the result from
41 b.Func, we could then use this LocalVariable to invoke the
46 Move our utility FindMembers from TypeContainer to Decl, because interfaces
47 are also scanned with it.
51 Can a constant_expression invoke overloaded operators?
52 Explicit user-defined conversions?
56 I am not reporting errors on visibility yet.
60 Normalize, and use Tokenizer location
64 Currently I am not resolving enumerations.
66 Either I track them with `RecordEnum' as I do with classes,
67 structs and interfaces or I rewrite the code to visit type
68 containers and `walk' the enums with this process.
74 They should should use:
76 OPEN_PARENS type CLOSE_PARENS
78 instead of the current production which is wrong, because it
79 only handles a few cases.
83 Array r = (string []) object
89 For indexers, the output of ix2.cs is different from our
90 compiler and theirs. They use a DefaultMemberAttribute, which
91 I have yet to figure out:
93 .class interface private abstract auto ansi INTERFACE
95 .custom instance void [mscorlib]System.Reflection.DefaultMemberAttribute::.ctor(string)
96 = ( 01 00 04 49 74 65 6D 00 00 ) // ...Item..
102 I have not figured out why the Microsoft version puts an
103 `instance' attribute, and I am not generating this `instance' attribute.
107 Currently it calls the parent constructor before initializing fields.
108 It should do it the other way around.
110 * Use of EmitBranchable
112 Currently I use brfalse/brtrue in the code for statements, instead of
113 using the EmitBranchable function that lives in Binary
115 * Create an UnimplementedExpcetion
117 And use that instead of plain Exceptions.
121 Currently ConvertImplicit will not catch things like:
123 - IntLiteral in a float context to generate a -FloatLiteral.
124 Instead it will perform an integer load followed by a conversion.
126 * In class.cs: Method.Define
128 Need to use FindMembers to lookup the member for reporting
129 whether a new is needed or not.
131 * virtual-method.cs breaks
133 It breaks on the call to: new B ();
135 Where B is a class defined in the source code, my guess is that
136 the look for ".ctor" fails
138 * Foreach on structure returns does not work
140 I am generating invalid code instead of calling ldarga for the
141 structure, I am calling ldarg:
144 public IEnumerator GetEnumerator ();
149 foreach (object a in x){
153 I need to get the address of that bad boy
157 Understand how methods are invoked on structs