2004-01-04 David Sheldon <dave-mono@earth.li>
[mono.git] / mcs / mcs / ChangeLog
index 58ead36c0372acaffceb102227b2ba2786d23246..b7d35f1193feb561873fe05616f14141df49b029 100755 (executable)
@@ -1,8 +1,770 @@
+2004-01-04  David Sheldon <dave-mono@earth.li>
+
+  * expression.cs: Added matching ")" to error message for 
+  CS0077
+
+2004-01-03 Todd Berman <tberman@gentoo.org>
+       
+       * ecore.cs, attribute.cs:
+       Applying fix from #52429.
+
+2004-01-03 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * ecore.cs, expression.cs, statement.cs:
+       Total rewrite of how we handle branching. We
+       now handle complex boolean expressions with fewer
+       jumps. As well if (x == 0) no longer emits a ceq.
+
+       if (x is Foo) is much faster now, because we generate
+       better code.
+
+       Overall, we get a pretty big improvement on our benchmark
+       tests. The code we generate is smaller and more readable.
+
+       I did a full two-stage bootstrap. The patch was reviewed
+       by Martin and Miguel.
+
+2004-01-03 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * cs-parser.jay: Make primary_expression not take a QI.
+       we dont need this because the member_access rule covers
+       us here. So we replace the rule with just IDENTIFIER.
+
+       This has two good effects. First, we remove a s/r conflict.
+       Second, we allocate many fewer QualifiedIdentifier objects.
+
+2004-01-03 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * attribute.cs: Handle MarshalAs attributes as pseudo, and
+       set the correct information via SRE. This prevents
+       hanging on the MS runtime. Fixes #29374.
+
+2004-01-03 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * convert.cs: correctly handle conversions to value types
+       from Enum and ValueType as unboxing conversions.
+
+       Fixes bug #52569. Patch by Benjamin Jemlich.
+
+2004-01-02  Ravi Pratap  <ravi@ximian.com>
+
+       * expression.cs (BetterConversion): Prefer int -> uint
+       over int -> ulong (csc's behaviour). This fixed bug #52046.
+
+2004-01-02 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * decl.cs (MemberCache.FindMembers): now returns a
+       MemberInfo [].
+
+       * typemanager.cs: In general, go with with ^^.
+       (CopyNewMethods): take an IList.
+       (RealMemberLookup): Only allocate an arraylist
+       if we copy from two sets of methods.
+
+       This change basically does two things:
+       1) Fewer array lists allocated due to CopyNewMethods.
+       2) the explicit cast in MemberList costed ALOT.
+
+2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
+
+       * cs-tokenizer.cs (consume_identifier) driver.cs: Cache identifiers in
+       a hashtable to avoid needless string allocations when an identifier is
+       used more than once (the common case).
+
+2004-01-01 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * pending.cs: MS's TypeBuilder.GetInterfaces ()
+       is broken, it will not return anything. So, we
+       have to use the information we have in mcs to
+       do the task.
+
+       * typemanager.cs: Add a cache for GetInterfaces,
+       since this will now be used more often (due to ^^)
+
+       (GetExplicitInterfaces) New method that gets the
+       declared, not effective, interfaces on a type
+       builder (eg, if you have interface IFoo, interface
+       IBar, Foo : IFoo, Bar : Foo, IBar, GetExplInt (Bar) ==
+       { IBar }.
+
+       This patch makes MCS able to bootstrap itself on
+       Windows again.
+
+2004-01-01 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * expression.cs: Remove the Nop's that Miguel put
+       in by mistake.
+
+2003-12-31 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * report.cs, codegen.cs: Give the real stack trace to
+       the error when an exception is thrown.
+
+2003-12-31 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * decl.cs: only allocate hashtables for ifaces if 
+       it is an iface!
+
+2003-12-31 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * expression.cs: fix the error from cs0121-2.cs
+       (a parent interface has two child interfaces that
+       have a function with the same name and 0 params
+       and the function is called through the parent).
+
+2003-12-30 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * class.cs, rootcontext.cs, typmanager.cs: do not
+       leak pointers.
+
+2003-12-28 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * codegen.cs: remove stack for the ec flow branching.
+       It is already a linked list, so no need.
+
+2003-12-27 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * Makefile: Allow custom profiler here.
+
+2003-12-26 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * typemanager.cs (LookupType):
+         - Use a static char [], because split takes
+           a param array for args, so it was allocating
+           every time.
+         - Do not store true in a hashtable, it boxes.
+
+2003-12-26 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * flowanalysis.cs: bytify common enums.
+
+2003-12-25 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * modifiers.cs: Add a new set of flags for the
+       flags allowed on explicit interface impls.
+       * cs-parser.jay: catch the use of modifiers in
+       interfaces correctly.
+       * class.cs: catch private void IFoo.Blah ().
+
+       All related to bug #50572.
+
+2003-12-25 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * decl.cs: Rewrite the consistant accessability checking.
+       Accessability is not linear, it must be implemented in
+       a tableish way. Fixes #49704.
+
+2003-12-25 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * expression.cs: Handle negation in a checked context.
+       We must use subtraction from zero. Fixes #38674.
+
+2003-12-23 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * class.cs: Ignore static void main in DLLs.
+       * rootcontext.cs: Handle the target type here,
+       since we are have to access it from class.cs
+       * driver.cs: account for the above.
+
+2003-12-23 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * report.cs: Give line numbers and files if available.
+
+2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
+
+       * driver.cs: Implement /addmodule.
+
+       * typemanager.cs:  Change 'modules' field so it now contains Modules not
+       ModuleBuilders.
+
+2003-12-20  Martin Baulig  <martin@ximian.com>
+
+       * class.cs (TypeContainer.DefineMembers): Don't do the CS0649 check here.
+       (FieldBase.IsAssigned): Removed this field.
+       (FieldBase.SetAssigned): New public method.
+       (TypeContainer.Emit): Make the CS0169/CS0649 checks actually work.
+
+2003-12-20  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (LocalVariableReference.DoResolve): Don't set
+       `vi.Used' if we're called from DoResolveLValue().
+
+       * statement.cs (Block.DoResolve): `ec.DoEndFlowBranching()' now
+       returns the usage vector it just merged into the current one -
+       pass this one to UsageWarning().
+       (Block.UsageWarning): Take the `FlowBranching.UsageVector' instead
+       of the `EmitContext', don't call this recursively on our children.
+
+2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
+
+       * driver.cs: Implement /target:module.
+
+2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
+
+       * support.cs (CharArrayHashtable): New helper class.
+
+       * cs-tokenizer.cs: Store keywords in a hashtable indexed by 
+       char arrays, not strings, so we can avoid creating a string in
+       consume_identifier if the identifier is a keyword.
+
+2003-12-16  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs (LocalInfo.Assigned): Removed this property.
+       (LocalInfo.Flags): Removed `Assigned'.
+       (LocalInfo.IsAssigned): New public method; takes the EmitContext
+       and uses flow analysis.
+       (Block.UsageWarning): Made this method private.
+       (Block.Resolve): Call UsageWarning() if appropriate.
+
+       * expression.cs (LocalVariableReference.DoResolve): Always set
+       LocalInfo.Used here.
+
+2003-12-13  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs (Statement.DoEmit, Statement.Emit): Don't return
+       any value here; we're now using flow analysis to figure out
+       whether a statement/block returns a value.
+
+2003-12-13  Martin Baulig  <martin@ximian.com>
+
+       * flowanalysis.cs (UsageVector.MergeFinallyOrigins): Made this
+       working again.
+       (FlowBranching.MergeFinally): Don't call
+       `branching.CheckOutParameters()' here, this is called in
+       MergeTopBlock().
+       (FlowBranchingException.AddSibling): Call MergeFinallyOrigins()
+       when adding the `finally' vector.       
+
+2003-12-13  Martin Baulig  <martin@ximian.com>
+
+       * flowanalysis.cs
+       (UsageVector.MergeJumpOrigins, FlowBranching.Label): Make this
+       actually work and also fix #48962.
+
+2003-12-12 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * decl.cs: Do not check System.Object for nested types,
+       since we know it does not have any. Big bang for buck:
+
+       BEFORE:
+          Run 1:   8.35 seconds
+          Run 2:   8.32 seconds
+          corlib:  17.99 seconds
+       AFTER:
+          Run 1:   8.17 seconds
+          Run 2:   8.17 seconds
+          corlib:  17.39 seconds
+
+2003-12-11 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * class.cs (FindMembers): Allocate arraylists on demand. Most of the
+       time we are returning 0 members, so we save alot here.
+
+2003-12-11  Martin Baulig  <martin@ximian.com>
+
+       * flowanalysis.cs (UsageVector.MergeResult): Renamed this back to
+       `MergeChild()', also just take the `FlowBranching' as argument;
+       call Merge() on it and return the result.
+       (FlowBranching.Merge): We don't need to do anything if we just
+       have one sibling.
+
+2003-12-11  Martin Baulig  <martin@ximian.com>
+
+       * flowanalysis.cs: Use a list of `UsageVector's instead of storing
+       them in an `ArrayList' to reduce memory usage.  Thanks to Ben
+       Maurer for this idea.
+
+2003-12-11  Martin Baulig  <martin@ximian.com>
+
+       * flowanalysis.cs (MergeResult): This class is now gone; we now
+       use the `UsageVector' for this.  The reason for this is that if a
+       branching just has one sibling, we don't need to "merge" them at
+       all - that's the next step to do.
+       (FlowBranching.Merge): We now return a `UsageVector' instead of a
+       `MergeResult'.
+
+2003-12-11  Martin Baulig  <martin@ximian.com>
+
+       Reworked flow analyis and made it more precise and bug-free.  The
+       most important change is that we're now using a special `Reachability'
+       class instead of having "magic" meanings of `FlowReturns'.  I'll
+       do some more cleanups and optimizations and also add some more
+       documentation this week.
+
+       * flowanalysis.cs (Reachability): Added `Throws' and `Barrier';
+       largely reworked this class.
+       (FlowReturns): Removed `Unreachable' and `Exception'; we now use
+       the new `Reachability' class instead of having "magic" values here.
+       (FlowBranching): We're now using an instance of `Reachability'
+       instead of having separate `Returns', `Breaks' etc. fields.
+
+       * codegen.cs (EmitContext.EmitTopBlock): Set `has_ret' solely
+       based on flow analysis; ignore the return value of block.Emit ().
+
+2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
+
+       * driver.cs typemanager.cs: Find the mono extensions to corlib even
+       if they are private.
+
+2003-12-09  Martin Baulig  <martin@ximian.com>
+
+       * flowanalyis.cs (FlowBranching.Return, Goto, Throw): Removed;
+       call them directly on the UsageVector.
+
+2003-12-09  Martin Baulig  <martin@ximian.com>
+
+       * flowanalysis.cs (FlowBranching.MergeChild, MergeTopBlock):
+       Changed return type from `FlowReturns' to `Reachability'.
+
+2003-12-09  Martin Baulig  <martin@ximian.com>
+
+       * flowanalysis.cs (FlowBranching.Reachability): New sealed class.
+       (FlowBranching.MergeResult): Replaced the `Returns', `Breaks' and
+       `Reachable' fields with a single `Reachability' one.
+
+2003-12-08 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * class.cs (FindMembers): Remove foreach's.
+
+       Bootstrap times:
+       
+       BEFORE
+               Run 1:   8.74 seconds
+               Run 2:   8.71 seconds
+       
+       AFTER
+               Run 1:   8.64 seconds
+               Run 2:   8.58 seconds
+       
+
+2003-12-08 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * cs-parser.jay:
+       * gen-treedump.cs:
+       * statement.cs:
+       This patch does a few things:
+               1. EmptyStatement is now a singleton, so it is never reallocated.
+               2. All blah is EmptyStatement constructs have been changed to
+                  blah == EmptyStatement.Value, which is much faster and valid
+                  now that EmptyStatement is a singleton.
+               3. When resolving a block, rather than allocating a new array for
+                  the non-empty statements, empty statements are replaced with
+                  EmptyStatement.Value
+               4. Some recursive functions have been made non-recursive.
+       Mainly the performance impact is from (3), however (1) and (2) are needed for
+       this to work. (4) does not make a big difference in normal situations, however
+       it makes the profile look saner.
+
+       Bootstrap times:
+
+       BEFORE
+       9.25user 0.23system 0:10.28elapsed 92%CPU (0avgtext+0avgdata 0maxresident)k
+       9.34user 0.13system 0:10.23elapsed 92%CPU (0avgtext+0avgdata 0maxresident)k
+       Total memory allocated: 56397 KB
+       
+       AFTER
+       9.13user 0.09system 0:09.64elapsed 95%CPU (0avgtext+0avgdata 0maxresident)k
+       8.96user 0.24system 0:10.13elapsed 90%CPU (0avgtext+0avgdata 0maxresident)k
+       Total memory allocated: 55666 KB
+
+2003-12-08 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * support.cs: Rewrite DoubleHash to use its own impl. Is faster
+       than the hashtable in a hashtable version
+
+       * decl.cs: Right now, whenever we try to lookup a type inside a namespace,
+       we always end up concating a string. This results in a huge perf
+       loss, because many strings have to be tracked by the GC. In this
+       patch, we first use a hashtable that works with two keys, so that
+       the strings do not need to be concat'ed.
+
+       Bootstrap times:
+       BEFORE
+               Run 1:   8.74 seconds
+               Run 2:   8.71 seconds
+       
+       AFTER
+               Run 1:   8.65 seconds
+               Run 2:   8.56 seconds
+       
+2003-12-08 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * Makefile: Add a new target `do-time' that does a quick and simple
+       profile, leaving easy to parse output.
+
+2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
+
+       * codegen.cs (Init): Create the dynamic assembly with 
+       AssemblyBuilderAccess.Save, to enable some optimizations in the runtime.
+
+2003-12-02 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * support.cs: Make the PtrHashtable use only one
+       instance of its comparer.
+
+2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
+
+       * typemanager.cs: Fix lookup of GetNamespaces.
+
+2003-11-29  Miguel de Icaza  <miguel@ximian.com>
+
+       * expression.cs: Removed redundant line.
+
+       * statement.cs (Block.Resolve, Block.Emit): Avoid foreach on
+       ArrayLists, use for loops with bounds.  
+
+       * flowanalysis.cs (FlowBranching.Merge): Avoid foreach on
+       arraylist.
+
+       * expression.cs (Invocation.OverloadResolve): Avoid foreach on
+       arraylists, use for loop with bounds.
+
+       The above three changes give us a 0.071 second performance
+       improvement out of 3.294 seconds down to 3.223.  On my machine
+       the above changes reduced the memory usage by 1,387 KB during
+       compiler bootstrap.
+
+       * cs-parser.jay (QualifiedIdentifier): New class used to represent
+       QualifiedIdentifiers.  Before we created a new string through
+       concatenation, and mostly later on, the result would be
+       manipulated by DecomposeQI through string manipulation.
+
+       This reduced the compiler memory usage for bootstrapping from
+       59380 KB to 59007 KB on my machine, 373 KB, and also reduced the
+       compile times in 0.05 seconds.
+
+2003-11-28  Dick Porter  <dick@ximian.com>
+
+       * support.cs: Do string compares with the Invariant culture.
+
+       * rootcontext.cs: 
+       * gen-treedump.cs: 
+       * expression.cs: 
+       * driver.cs: 
+       * decl.cs: 
+       * codegen.cs: 
+       * class.cs: Use the char forms of IndexOf and LastIndexOf, so that
+       the comparison is done with the Invariant culture.
+
+2003-11-27  Miguel de Icaza  <miguel@ximian.com>
+
+       * statement.cs (Foreach.TryType): Use DeclaredOnly to find the
+       GetEnumerator method.
+
+       (ProbeCollectionType): Iterate starting at the most specific type
+       upwards looking for a GetEnumerator
+
+       * expression.cs: Shift count can be up to 31 for int/uint and 63
+       for long/ulong.
+
+2003-11-26  Miguel de Icaza  <miguel@ximian.com>
+
+       * statement.cs (Block.LookupLabel): Also look for the label on the
+       children blocks.  Use a hash table to keep track of visited
+       nodes. 
+
+       * cfold.cs (IntConstant to UIntConstant mapping): Only return if
+       we actually did transform the other operand, otherwise fall back
+       to the common codepath that casts to long.
+
+       * cs-tokenizer.cs: Use the same code pattern as the int case.
+       Maybe I should do the parsing myself, and avoid depending on the
+       Parse routines to get this done.
+
+2003-11-25  Miguel de Icaza  <miguel@ximian.com>
+
+       * expression.cs: Apply fix from l_m@pacbell.net (Laurent Morichetti),  
+       which fixes bug 51347.  This time test it.
+       
+       * expression.cs: Make TypeOfVoid derive from TypeOf, so code in
+       attributes for example can not tell the difference between these.
+       The difference was only a syntax feature of the language. 
+
+       * attribute.cs: Apply attributes to delegates.
+
+       * delegate.cs: Call the apply attributes method.
+
+2003-11-24  Miguel de Icaza  <miguel@ximian.com>
+
+       * convert.cs (TryImplicitIntConversion): One line bug fix: we were
+       comparing 0 vs Byte.MinValue, not the value
+
+       (ImplicitConversionRequired): When reporting a conversion error,
+       use error 31 to print out the constant error instead of the
+       simpler 29.
+
+       * expression.cs: Apply fix from l_m@pacbell.net (Laurent Morichetti),  
+       which fixes bug 51347.
+       
+2003-11-22  Miguel de Icaza  <miguel@ximian.com>
+
+       * driver.cs: Applied patch from gert.driesen@pandora.be (Gert Driesen) 
+       which fixes the -warnaserror command line option.
+       
+2003-11-21  Miguel de Icaza  <miguel@ximian.com>
+
+       * cfold.cs (DoNumericPromotions): During constant folding of
+       additions on UIntConstant, special case intconstants with
+       IntConstants like we do on the expression binary operator. 
+
+2003-11-12  Miguel de Icaza  <miguel@ximian.com>
+
+       * convert.cs (ImplicitReferenceConversion): We were missing a case
+       (System.Enum are not value types or class types, so we need to
+       classify them separatedly).
+
+       * driver.cs: We do not support error 2007.
+
+2003-11-12 Jackson Harper <jackson@ximian.com>
+
+       * driver.cs: Use corlib.dll or mscorlib.dll when looking up the
+       system directory. Also use the full file name so users can
+       libraries names mscorlib-o-tron.dll in a non system dir.
+       
+2003-11-10  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs (TypeManager.ResolveExpressionTypes): Removed.
+       (TypeManager.InitCoreTypes): Initialize them here, but instead of
+       calling `ResolveType()' on them, directly assign their `Type'.
+
+2003-11-08  Martin Baulig  <martin@ximian.com>
+
+       * class.cs (TypeContainer.GetClassBases): Use TypeExpr's for the
+       return value and the `out parent' parameter.
+       (TypeContainer.DefineType): Moved the CS0644 check into
+       GetClassBases().  Don't pass the interface types to the
+       `builder.DefineType()'/`builder.DefineNestedType()', but resolve
+       them later and then call `TypeBuilder.AddInterfaceImplementation()'.
+
+       * ecore.cs (TypeExpr.IsAttribute): New property.
+       (TypeExpr.GetInterfaces): New method.
+
+       * interface.cs (Interface.GetInterfaceTypeByName): Return a
+       TypeExpr instead of a Type.
+       (Interface.GetInterfaceBases): Return TypeExpr's instead of Type's.
+       (Interface.DefineType): Don't pass the interface types to the
+       `builder.Definetype()'/`builder.DefineNestedType()', but resolve
+       them later and then call `TypeBulider.AddInterfaceImplementation()'.
+
+       * typemanager.cs (TypeManager.AddUserType): Take a `TypeExpr[]'
+       instead of a `Type[]'.
+       (TypeManager.RegisterBuilder): Likewise.
+       (TypeManager.AddUserInterface): Likewise.
+       (TypeManager.ExpandInterfaces): Take a `Type[]' instead of a
+       `Type[]' and also return a `TypeExpr[]'.
+       (TypeManager.GetInterfaces): Return a `TypeExpr[]'.
+
+2003-11-08  Martin Baulig  <martin@ximian.com>
+
+       * decl.cs (DeclSpace.ResolveTypeExpr): Return a TypeExpr, not an
+       Expression.     
+
+2003-11-08  Martin Baulig  <martin@ximian.com>
+
+       * decl.cs (DeclSpace.GetTypeResolveEmitContext): Call
+       TypeManager.ResolveExpressionTypes().
+
+       * ecore.cs (Expression.ResolveAsTypeTerminal): Return a TypeExpr
+       instead of an Expression.
+       (TypeExpr): This is now an abstract base class for `TypeExpression'.
+       (TypeExpression): New public class; formerly known as `TypeExpr'.
+
+       * expression.cs (ComposedCast): Derive from TypeExpr.
+
+       * typemanager.cs (TypeManager.system_*_expr): These are now
+       TypExpr's instead of Expression's.
+       (TypeManager.ResolveExpressionTypes): New public static function;
+       called from DeclSpace.GetTypeResolveEmitContext() to resolve all
+       of them.        
+
+2003-11-06  Miguel de Icaza  <miguel@ximian.com>
+
+       * expression.cs (New.DoResolve): Do not dereference value that
+       might be a null return.
+
+       * statement.cs (Block.EmitMeta): Use the Const.ChangeType to make
+       sure that the constant value has the right type.  Fixes an
+       unreported bug, similar to 50425.
+
+       * const.cs (Const.LookupConstantValue): Call
+       ImplicitStandardConversionExists before doing a conversion to
+       avoid havng the TypeManager.ChangeType do conversions.
+
+       Reduced the number of casts used
+
+       (Const.ChangeType): New routine to enable reuse of the constant
+       type changing code from statement.
+
+       * typemanager.cs (ChangeType): Move common initialization to
+       static global variables.
+
+       Fixes #50425.
+
+       * convert.cs (ImplicitReferenceConversion): Somehow we allowed
+       every value type to go through, even if it was void.  Fix that. 
+
+       * cs-tokenizer.cs: Use is_identifier_start_character on the start
+       character of the define, and the is_identifier_part_character for
+       the rest of the string.
+
+2003-11-05  Miguel de Icaza  <miguel@ximian.com>
+
+       * expression.cs (UnaryMutator.EmitCode): When I updated
+       LocalVariableReference.DoResolve, I overdid it, and dropped an
+       optimization done on local variable references.
+
+2003-11-04  Miguel de Icaza  <miguel@ximian.com>
+
+       * ecore.cs: Convert the return from Ldlen into an int.
+
+2003-10-20  Miguel de Icaza  <miguel@ximian.com>
+
+       * decl.cs (DeclSpace.GetAccessLevel): Handle NotPublic case for
+       the accessibility, this is a special case for toplevel non-public
+       classes (internal for instance).
+
+2003-10-20  Nick Drochak <ndrochak@gol.com>
+
+       * ecore.cs: Fix typo and build.  Needed another right paren.
+
+2003-10-19  Miguel de Icaza  <miguel@ximian.com>
+
+       * ecore.cs: Applied fix from Ben Maurer.   We were handling in the
+       `internal' case regular and protected, but not allowing protected
+       to be evaluated later.  Bug 49840
+
+2003-10-15  Miguel de Icaza  <miguel@ximian.com>
+
+       * statement.cs (Switch.TableSwitchEmit): Compare the upper bound
+       to kb.Nlast, and not the kb.nFirst to isolate the switch
+       statement.
+
+       Extract the underlying type, so enumerations of long/ulong are
+       treated like long/ulong.
+
+2003-10-14  Miguel de Icaza  <miguel@ximian.com>
+
+       * expression.cs (New): Overload the meaning of RequestedType to
+       track the possible creation of the NewDelegate type, since
+       DoResolve is invoked more than once for new constructors on field
+       initialization.
+
+       See bugs: #48800 and #37014
+
+       * cs-parser.jay (declare_local_constants): Take an arraylist
+       instead of a single constant.
+
+       (local_constant_declaration): It should take a
+       constant_declarators, not a constant_declarator.  Fixes 49487
+
+       * convert.cs: Fix error report.
+
+2003-10-13 Jackson Harper <jackson@ximian.com>
+
+       * typemanager.cs (TypeToCoreType): Add float and double this fixes
+       bug #49611
+       
+2003-10-09  Martin Baulig  <martin@ximian.com>
+
+       * class.cs (MethodCore): Added additional `DeclSpace ds' argument
+       to the .ctor.
+       (MethodCore.DoDefineParameters): Removed the TypeContainer
+       argument; use the DeclSpace which was passed to the .ctor instead.
+       (MethodCore.CheckParameter): Take a DeclSpace instead of a
+       TypeContainer; we only need a DeclSpace here.
+
+2003-10-09  Martin Baulig  <martin@ximian.com>
+
+       * class.cs (MethodData): Added additional `DeclSpace ds' argument
+       to the .ctor.
+       (MethodData.Define, MethodData.Emit): Pass the `ds' to the
+       EmitContext's .ctor.    
+
+2003-10-09  Martin Baulig  <martin@ximian.com>
+
+       * decl.cs (DeclSpace.AsAccessible): Moved here from TypeContainer.
+       (AccessLevel, CheckAccessLevel, GetAccessLevel): They're used by
+       AsAccessible(), moved them as well.
+
+       * class.cs (TypeContainer.AsAccessible): Moved to DeclSpace.
+
+2003-10-08  Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
+
+       * cs-parser.jay : Renamed yyName to yyNames related to jay.
+
+2003-10-07  Miguel de Icaza  <miguel@ximian.com>
+
+       * expression.cs (Binary.Emit.GreatherThanOrEqual): Fix the code
+       generation for >=, as spotted by Paolo, bug 48679.  
+       Patch from David Waite.
+
+       * cs-tokenizer.cs: Add handling for #pragma.
+
+       * cs-parser.jay: Allow for both yield and yield return in the
+       syntax.  The anti-cobolization of C# fight will go on!
+
+       * class.cs (TypeBuilder.DefineType): Catch error condition here
+       (Parent.DefineType erroring out and returning null).
+
+       * expression.cs (ArrayCreation.EmitDynamicInitializers): When
+       coping with enumerations variables, we were mistakenly processing
+       them as a regular value type instead of built-in types.  Fixes the
+       bug #48063
+
+       * typemanager.cs (IsBuiltinOrEnum): New method.
+
+2003-09-30  Miguel de Icaza  <miguel@ximian.com>
+
+       * cs-parser.jay: Upgrade: yield now needs the return clause.
+
+2003-09-19  Martin Baulig  <martin@ximian.com>
+
+       * decl.cs (MemberCache.SetupCacheForInterface): Take a
+       `MemberCache parent' argument.  Normally, an interface doesn't
+       have a parent type except System.Object, but we use this in gmcs
+       for generic type parameters.
+
+2003-09-18  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs (TypeHandle.ctor): Set `IsInterface' solely based
+       on `type.IsInterface'; don't check whether the type has a parent
+       to determine whether it's an interface.
+
+2003-09-15  Martin Baulig  <martin@ximian.com>
+
+       * class.cs (TypeContainer.DefineType): Added an error flag to
+       avoid reporting duplicate CS0146's ("class definition is
+       circular.").
+
+       * driver.cs (Driver.MainDriver): Abort if
+       RootContext.ResolveTree() reported any errors.
+
+2003-09-07  Martin Baulig  <martin@ximian.com>
+
+       * report.cs (Error, Warning): Added overloaded versions which take
+       a `params object[] args' and call String.Format().
+
+2003-09-07  Martin Baulig  <martin@ximian.com>
+
+       * decl.cs (DeclSpace..ctor): Don't call
+       NamespaceEntry.DefineName() here; do it in RecordDecl() which is
+       called from Tree.RecordDecl().  Fixes the CS0101 reporting.
+       (DeclSpace.RecordDecl): New method.
+
+       * tree.cs (Tree.RecordDecl): Call ds.RecordDecl().
+
 2003-09-02  Ravi Pratap  <ravi@ximian.com>
 
        * attribute.cs (CheckAttributeTarget): Ensure that we allow return
        value attributes to be applied to ParameterBuilders.
 
+       * class.cs (MethodCore.LabelParameters): Make static and more
+       generic so that it can be used from other places - like interface
+       methods, for instance.
+
+       * interface.cs (Interface.Emit): Call LabelParameters before
+       emitting attributes on the InterfaceMethod.
+
 2003-08-26  Martin Baulig  <martin@ximian.com>
 
        * ecore.cs (SimpleName.SimpleNameResolve): Look for members before