b0f39adf405f5b8825c582a94c82b8bfefb84270
[mono.git] / mcs / mcs / ChangeLog
1 2001-08-04  Miguel de Icaza  <miguel@ximian.com>
2
3         * rootcontext.cs: Beginning of the class resolution.
4
5 2001-08-03  Miguel de Icaza  <miguel@ximian.com>
6
7         * rootcontext.cs: Provide better error reporting. 
8
9         * cs-parser.jay (interface_base): set our $$ to be interfaces.
10
11         * rootcontext.cs (CreateInterface): Handle the case where there
12         are no parent interfaces.
13         
14         (CloseTypes): Routine to flush types at the end.
15         (CreateInterface): Track types.
16         (GetInterfaces): Returns an array of Types from the list of
17         defined interfaces.
18
19         * typemanager.c (AddUserType): Mechanism to track user types (puts
20         the type on the global type hash, and allows us to close it at the
21         end). 
22         
23 2001-08-02  Miguel de Icaza  <miguel@ximian.com>
24
25         * tree.cs: Removed RecordType, added RecordClass, RecordStruct and
26         RecordInterface instead.
27
28         * cs-parser.jay: Updated to reflect changes above.
29
30         * decl.cs (Definition): Keep track of the TypeBuilder type that
31         represents this type here.  Not sure we will use it in the long
32         run, but wont hurt for now.
33
34         * driver.cs: Smaller changes to accomodate the new code.
35
36         Call ResolveInterfaceBases, Call ResolveClassBases, Save assembly
37         when done. 
38
39         * rootcontext.cs (CreateInterface):  New method, used to create
40         the System.TypeBuilder type for interfaces.
41         (ResolveInterfaces): new entry point to resolve the interface
42         hierarchy. 
43         (CodeGen): Property, used to keep track of the code generator.
44
45 2001-07-26  Miguel de Icaza  <miguel@ximian.com>
46
47         * cs-parser.jay: Add a second production for delegate_declaration
48         with `VOID'.
49
50         (enum_body): Put an opt_comma here instead of putting it on
51         enum_body or enum_member_declarations so we can handle trailing
52         commas on enumeration members.  Gets rid of a shift/reduce.
53         
54         (type_list): Need a COMMA in the middle.
55
56         (indexer_declaration): Tell tokenizer to recognize get/set
57
58         * Remove old targets.
59
60         * Re-add the parser target.
61
62 2001-07-13  Simon Cozens <simon@simon-cozens.org>
63
64         * cs-parser.jay: Add precendence rules for a number of operators
65         ot reduce the number of shift/reduce conflicts in the grammar.
66         
67 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
68
69         * tree.cs: moved IGenerator interface and renamed it to ITreeDump
70         and put it here.
71
72         Get rid of old crufty code.
73
74         * rootcontext.cs: Use this to keep track of the parsed
75         representation and the defined types available to the program. 
76
77         * gen-treedump.cs: adjust for new convention.
78
79         * type.cs: Split out the type manager, and the assembly builder
80         from here. 
81
82         * typemanager.cs: the type manager will live here now.
83
84         * cil-codegen.cs: And the code generator here. 
85
86 2001-07-14  Sean MacIsaac  <macisaac@ximian.com>
87
88         * makefile: Fixed up for easy making.
89
90 2001-07-13  Simon Cozens <simon@simon-cozens.org>
91
92         * cs-parser.jay (rank_specifier): Remove a conflict by reordering
93         the 
94
95         (unary_expression): Expand pre_increment_expression and
96         post_decrement_expression to reduce a shift/reduce.
97
98 2001-07-11  Simon Cozens
99
100         * cs-tokenizer.cs: Hex numbers should begin with a 0.
101
102         Improve allow_keyword_as_indent name.
103
104 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
105
106         * Adjustments for Beta2. 
107
108 2001-06-13  Miguel de Icaza  <miguel@ximian.com>
109
110         * decl.cs: Added `Define' abstract method.
111         (InTransit): new property, used to catch recursive definitions. 
112
113         * interface.cs: Implement `Define'. 
114
115         * modifiers.cs: Map Modifiers.constants to
116         System.Reflection.TypeAttribute flags.
117
118         * class.cs: Keep track of types and user-defined types.
119         (BuilderInit): New method for creating an assembly
120         (ResolveType): New function to launch the resolution process, only
121         used by interfaces for now.
122
123         * cs-parser.jay: Keep track of Classes, Structs and Interfaces
124         that are inserted into the name space. 
125
126 2001-06-08  Miguel de Icaza  <miguel@ximian.com>
127
128         * ARGH.  I have screwed up my tree so many times due to the use of
129         rsync rather than using CVS.  Going to fix this at once. 
130
131         * driver.cs: Objetify driver.  Load assemblies, use assemblies to
132         load types.
133
134 2001-06-07  Miguel de Icaza  <miguel@ximian.com>
135
136         * Experiment successful: Use System.Type rather that our own
137         version of Type.  
138
139 2001-05-25  Miguel de Icaza  <miguel@ximian.com>
140
141         * cs-parser.jay: Removed nsAliases from here.
142
143         Use new namespaces, handle `using XXX;' 
144
145         * namespace.cs: Reimplemented namespace handling, use a recursive
146         definition of the class.  Now we can keep track of using clauses
147         and catch invalid using clauses.
148
149 2001-05-24  Miguel de Icaza  <miguel@ximian.com>
150
151         * gen-treedump.cs: Adapted for all the renaming.
152
153         * expression.cs (Expression): this class now has a Type property
154         which returns an expression Type.
155
156         (Probe::, New::, TypeOf::, SizeOf::, Constant::): renamed from
157         `Type', as this has a different meaning now in the base
158
159 2001-05-22  Miguel de Icaza  <miguel@ximian.com>
160
161         * interface.cs, class.cs: Removed from all the sources the
162         references to signature computation, as we can not do method
163         signature computation during the parsing time, as we are not
164         trying to solve at that point distinguishing:
165
166         class X {
167                 void a (Blah x) {}
168                 void a (NS.Blah x) {}
169         }
170
171         Which depending on the context might be valid or not, as we do not
172         know if Blah is the same thing as NS.Blah at that point.
173
174         * Redid everything so the code uses TypeRefs now instead of
175         Types.  TypeRefs are just temporary type placeholders, that need
176         to be resolved.  They initially have a pointer to a string and the
177         current scope in which they are used.  This is used later by the
178         compiler to resolve the reference to an actual Type. 
179
180         * DeclSpace is no longer a CIR.Type, and neither are
181         TypeContainers (Class and Struct) nor Interfaces nor Enums.  They
182         are all DeclSpaces, but no Types. 
183
184         * type.cs (TypeRefManager): This implements the TypeRef manager,
185         which keeps track of all the types that need to be resolved after
186         the parsing has finished. 
187
188 2001-05-13  Miguel de Icaza  <miguel@ximian.com>
189
190         * ARGH.  We are going to have to store `foreach' as a class rather
191         than resolving it, as we need to verify error 1579 after name
192         resolution.   *OR* we could keep a flag that says `This request to
193         IEnumerator comes from a foreach statement' which we can then use
194         to generate the error.
195
196 2001-05-10  Miguel de Icaza  <miguel@ximian.com>
197
198         * class.cs (TypeContainer.AddMethod): we now add methods to the
199         MethodGroup instead of the method hashtable.  
200
201         * expression.cs: Add MethodGroup abstraction, which gets us one
202         step closer to the specification in the way we handle method
203         declarations.  
204
205         * cs-parser.jay (primary_expression): qualified_identifier now
206         tried to match up an identifier to a local variable reference or
207         to a parameter reference.
208
209         current_local_parameters is now a parser global variable that
210         points to the current parameters for the block, used during name
211         lookup.
212
213         (property_declaration): Now creates an implicit `value' argument to
214         the set accessor.
215
216 2001-05-09  Miguel de Icaza  <miguel@ximian.com>
217
218         * parameter.cs: Do not use `param' arguments as part of the
219         signature, per the spec.
220
221 2001-05-08  Miguel de Icaza  <miguel@ximian.com>
222
223         * decl.cs: Base class for classes, structs and interfaces.  This
224         is the "Declaration Space" 
225
226         * cs-parser.jay: Use CheckDef for checking declaration errors
227         instead of having one on each function.
228
229         * class.cs: Factor out some code for handling error handling in
230         accordance to the "Declarations" section in the "Basic Concepts"
231         chapter in the ECMA C# spec.
232
233         * interface.cs: Make all interface member classes derive from
234         InterfaceMemberBase.
235
236 2001-05-07  Miguel de Icaza  <miguel@ximian.com>
237
238         * Many things: all interfaces are parsed and generated in
239         gen-treedump.  Support for member variables, constructors,
240         destructors, properties, constants is there.
241
242         Beginning of the IL backend, but very little done, just there for
243         testing purposes. 
244
245 2001-04-29  Miguel de Icaza  <miguel@ximian.com>
246
247         * cs-parser.jay: Fix labeled statement.
248
249         * cs-tokenizer.cs (escape): Escape " and ' always.
250         ref_line, ref_name: keep track of the line/filename as instructed
251         by #line by the compiler.
252         Parse #line.
253
254 2001-04-27  Miguel de Icaza  <miguel@ximian.com>
255
256         * System.CodeDOM/CodeBinaryOperatorExpression.cs: Rearrange enum
257         to match the values in System.CodeDOM.
258
259         Divid renamed to Divide.
260
261         * System.CodeDOM/CodeForLoopStatement.cs: Always have valid
262         statements. 
263         (Statements.set): remove.
264
265         * System.CodeDOM/CodeCatchClause.cs: always have a valid
266         statements. 
267
268         * System.CodeDOM/CodeIfStatement.cs: trueStatements and
269         falseStatements always have valid values. 
270
271         * cs-parser.jay: Use System.CodeDOM now.
272