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