LinkButtonTest.cs added new tests for 2.0
[mono.git] / mcs / gmcs / ChangeLog
index dfeec07da70fc85647e24f093158e62302d91fc8..e80d9bb8c6b0579f5d9ff3be58967da9b6ac76e7 100644 (file)
+2006-11-21  Marek Safar  <marek.safar@gmail.com>
+
+       * cs-parser.jay: Tiny change to work with mcs tokenizer.
+
+       * cs-tokenizer.cs: Remove after unification with mcs.
+
+2006-10-28  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #78998
+       * generic.cs (ConstructedType.AsAccessible): Check accessibility of type
+       arguments as well.
+
+2006-10-26  Marek Safar  <marek.safar@gmail.com>
+
+       A fix for bug #76591
+       * cs-tokenizer.cs (IsCastToken): Enable a cast of anonymous methods.
+
+2006-10-25  Brian Crowell  <brian@fluggo.com>
+
+       Fix #79703
+       * generic.cs (CheckConstraints): Allow generic parameters with
+       inheritance constraints to satisfy reference type constraints.
+
+2006-10-09  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (NullCoalescingOperator.DoResolve): Fix #78964; added gtest-294.cs.
+
+2006-09-25  Martin Baulig  <martin@ximian.com>
+
+       * class.cs: Remove after unification with mcs source.
+
+2006-09-24  Raja R Harinath  <harinath@gmail.com>
+
+       * convert.cs: Remove after unification with mcs source.
+
+2006-09-24  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (MemberBase.VerifyClsCompliance): When method has type
+       parameters verify them as well.
+
+       * generic.cs (Constraints.VerifyClsCompliance): Verify CLS-Compliance of
+       the type parameter constraints.
+       (Generics.VerifyClsCompliance): Ditto.
+
+2006-09-24  Marek Safar  <marek.safar@seznam.cz>
+
+       * anonymous.cs (AnonymousMethod.Compatible): Cannot generate arguments
+       for anonymous block with out argument.
+
+2006-09-24  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (ClassOrStruct.VerifyMembers): Fixed to report correctly
+       not used private events only.
+
+2006-09-23  Marek Safar  <marek.safar@seznam.cz>
+
+       * convert.cs (ImplicitReferenceConversion): NullCast to EmptyConstantCast.
+
+       * cs-parser.jay: Parse correctly cast of default (T).
+
+       * generic.cs (DefaultValueExpression.DoResolve): Check for void type.
+       Store original type via EmptyConstantCast.
+
+2006-09-22  Martin Baulig  <martin@ximian.com>
+
+       * delegate.cs: Removed; this file is now shared with mcs.
+
+       * attribute.cs: Removed; this file is now shared with mcs.
+
+2006-09-22  Martin Baulig  <martin@ximian.com>
+
+       * ecore.cs: Removed; this file is now shared with mcs.
+
+2006-09-21  Marek Safar  <marek.safar@seznam.cz>
+
+       * convert.cs (ImplicitReferenceConversion): Reuse ToType.
+
+       * ecore.cs (NullCast): Derives from NullConstant.
+
+       * generic.cs (DefaultValueExpression): Fixed to cope with the constant
+       results.
+
+2006-09-21  Martin Baulig  <martin@ximian.com>
+
+       * decl.cs: Removed; this file is now shared with mcs.
+
+2006-09-21  Raja R Harinath  <rharinath@novell.com>
+
+       * rootcontext.cs: Remove after unification with mcs source.
+
+       * report.cs: Remove after unification with mcs source.
+       * generic.cs (AddTypeParameter, LookupTypeParameter): Move to
+       mcs/typemanager.cs.
+       (InitGenerics, CleanUpGenerics): Remove.
+
+       * support.cs: Remove after unification with mcs source.
+
+2006-09-20  Raja R Harinath  <rharinath@novell.com>
+
+       * codegen.cs: Remove after unification with mcs source.
+
+2006-09-19  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs: Removed; this file is now shared with mcs.
+
+2006-09-19  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (TypeManager.IsEqual): Moved into ../mcs/typemanager.cs.
+       (TypeManager.DropGenericTypeArguments): Likewise.
+       (TypeManager.DropGenericMethodArguments): Likewise.
+       (TypeManager.GetTypeArguments): Likewise.
+       (TypeManager.HasGenericArguments): Likewise.
+
+2006-09-19  Martin Baulig  <martin@ximian.com>
+
+       * ecore.cs (PropertyExpr.InstanceResolve): Fix the CS1540 check.
+
+2006-09-19  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs: Removed; this file is now shared with mcs.
+
+2006-09-16  Raja R Harinath  <rharinath@novell.com>
+
+       * Makefile (LOCAL_MCS_FLAGS): Use instead of PROFILE_MCS_FLAGS.
+       * AssemblyInfo.cs, driver.cs: Remove after unification with mcs source.
+
+2006-09-16  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #79401
+       * class.cs (MethodCore.VerifyClsCompliance): Do check for abstract members
+       only if parent type is class.
+       * decl.cs (MemberCore.GetClsCompliantAttributeValue): Fixed missing cache
+       update.
+
+2006-09-15  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-parser.jay,
+       * expression.cs(MemberAccess.DoResolve): Don't crash when not allowed
+       keywords are used.
+       * typemanager.cs(CSharpName): Converts NullType to null.
+
+2006-09-15  Martin Baulig  <martin@ximian.com>
+
+       * pending.cs: Removed; this file is now shared with mcs.
+
+2006-09-15  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs: Removed; this file is now shared with mcs.
+
+2006-09-15  Martin Baulig  <martin@ximian.com>
+
+       * rootcontext.cs (RootContext.BrokenCircularDeps): Removed.
+
+       * driver.cs: Removed the `--broken-cycles' argument.
+
+2006-09-15  Martin Baulig  <martin@ximian.com>
+
+       * namespace.cs: Removed; this file is now shared with mcs.
+
+2006-09-15  Martin Baulig  <martin@ximian.com>
+
+       * decl.cs (MemberName): Minor code cleanups.
+
+2006-09-15  Martin Baulig  <martin@ximian.com>
+
+       * parameter.cs: Removed; this file is now shared with mcs.
+
+2006-09-15  Martin Baulig  <martin@ximian.com>
+
+       * enum.cs: Removed; this file is now shared with mcs.
+
+2006-09-15  Martin Baulig  <martin@ximian.com>
+
+       * Makefile: Define `GMCS_SOURCE'.
+
+       * flowanalysis.cs: Removed; this file is now shared with mcs.
+
+2006-09-15  Martin Baulig  <martin@ximian.com>
+
+       Removed modifiers.cs, literal.cs, location.cs, roottypes.cs,
+       assign.cs, const.cs, cfold.cs, constant.cs, symbolwriter.cs and
+       doc.cs - they are now shared with mcs.
+
+       * gmcs.exe.sources: Include these files from ../mcs/.
+
+2006-09-15  Martin Baulig  <martin@ximian.com>
+
+       * old-code.cs, gen-il.cs, gen-treedump.cs: Removed old stuff.
+       * g1.cs, sample-hello.cs, sample-stack.il: Likewise.
+
+2006-09-14  Marek Safar  <marek.safar@seznam.cz>
+
+       * assign.cs, ecore.cs, expression.cs: Share error message text.
+       * class.cs (FieldMember.Define): Check for variable of static type.
+       * decl.cs (check_type_parameter): Report correct type name.
+       * driver.cs (LoadAssembly): Uses error output for errors.
+       * generic.cs (Constraints.Resolve): Add check for constraint accessibility
+       (TypeArguments.Resolve): Static class cannot be used as an argument.
+       * statement.cs (ResolveMeta): Constants cannot be generic types.
+
+2006-09-12  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (TypeManager.IsIList): Moved into convert.cs.
+
+       * convert.cs (Convert.Array_To_IList): Moved here and correctly
+       implement it; fixes #79345.
+
+2006-09-08  Marek Safar  <marek.safar@seznam.cz>
+
+       * decl.cs (DeclSpace.SetParameterInfo): Check for nonexistent type
+       parameter.
+       * expression.cs (TypeOf.GetAttributableValue): Check for open generic
+       types.
+       * generic.cs: Improved error messages.
+       * typemanager.cs (RemoveGenericArity): Made public.
+
+2006-09-08  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs (TypeManager.interlocked_type): New public field.
+       (TypeManager.int_interlocked_compare-exchange): New public field.
+       (TypeManager.InitEnumUnderlyingTypes): Also initialize the
+       enumerator types here and call InitGenericCoreTypes().
+       (TypeManager.InitCoreTypes): Call InitEnumeratorTypes() right
+       after calling InitEnumUnderlyingTypes().
+
+       * rootcontext.cs
+       (RootContext.ResolveCore): Added `System.Threading.Interlocked' to
+       `classes_second_stage'. 
+
+2006-09-07  Marek Safar  <marek.safar@seznam.cz>
+       * class.cs, generic.cs (GenericMethod.Define): Check for type parameter
+       collisions.
+       * statement.cs (Block.Variables): Made public.
+
+2006-09-07  Martin Baulig  <martin@ximian.com>
+
+       * driver.cs
+       (MainDriver): Revert r62663 from Marek; see #70506 for details.
+
+2006-09-01  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (TypeManager.IsIList): Also handle base classes and interfaces. 
+
+2006-09-01  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #79238
+       * expression.cs (Invocation.MoreSpecific): Check for reference
+       types earlier.
+
+2006-08-29  Miguel de Icaza  <miguel@novell.com>
+
+       * cs-parser.jay: Turn 1522 into a warning, instead of an error #79210
+
+2006-08-17  Miguel de Icaza  <miguel@novell.com>
+
+       * cs-tokenizer.cs: Apply patch from Atsushi Enomoto that fixes
+       #52019 and #79064, the use of the \uXXXX sequence in source code
+       to represent unicode characters.
+
+2006-08-15  Marek Safar  <marek.safar@seznam.cz>
+       * expression.cs (SizeOf.DoResolve): Check for void type. Fixed enum types
+       support.
+       * class.cs, ecore.cs, statement.cs: Merged to one error message.
+
+2006-08-14  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #79067
+       * cs-tokenizer.cs (parse_less_than): Allow '*' to appear in a type
+       parameter too.  This only avoids a parse error -- the semantic
+       error is caught elsewhere.
+
+2006-08-13  Miguel de Icaza  <miguel@novell.com>
+
+       * assign.cs: Catch attempts to assign to a method groups in += and
+       report as 1656
+
+2006-08-13  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #79056
+       * cs-parser.jay: Don't destroy current array type by typeof of array's.
+
+2006-08-12  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-parser.jay: Check whether a constraint clause has already been
+       specified for type parameter.
+       * generic.cs (Constraints): Exposed location.
+
+2006-08-12  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (Method.Define): Issue a warning when generic method looks like
+       an entry point.
+       * decl.cs (MemberCore.GetSignatureForError): Print member type arguments
+       as well.
+       * report.cs: New warning number.
+
+2006-08-09  Marek Safar  <marek.safar@seznam.cz>
+       * anonymous.cs(AnonymousDelegate.Emit): Uses Constructor filter when
+       looking for ctor.
+       * decl.cs (MemberCache.FindMembers): When container is interface we need to
+       search all base interfaces as a member can be ambiguous.
+       * delegate.cs (Delegate.FindMembers): Fixed to return valid data for
+       Constructor member type filter. 
+       (Delegate.ResolveConstructorMethod) Uses Constructor filter.
+       * ecore.cs: (Expression.MemberLookup): Implemented ambiguity error/warning
+       reporting for returned memberinfos.
+       * report.cs: Updated.
+       * typemanager.cs (TypeManager.LookupBaseInterfacesCache): Uses TypeManager
+       version to work on all runtimes.
+       (TypeManager.RealMemberLookup): Removed members filtering.
+
+2006-08-08  Raja R Harinath  <rharinath@novell.com>
+
+       * ecore.cs (FieldExpr.EmitAssign): Release temporary.
+       (PropertyExpr.EmitAssign): Likewise.
+       * expression.cs (Indirection.EmitAssign): Likewise.
+       (LocalVariableReference.EmitAssign): Likewise.
+       (ParameterReference.EmitAssign): Likewise.
+       (Invocation.EmitArguments): Likewise.
+       (ArrayAccess.EmitAssign): Likewise.
+       (IndexerAccess.EmitAssign): Likewise.
+       (This.EmitAssign): Likewise.
+       (ConditionalLogicalOperator.Emit): Likewise.
+
+       Fix #79026
+       * codegen.cs (EmitContext.GetTemporaryLocal): Simplify.  Use Stack
+       instead of ArrayList.  If the hashtable has a LocalBuilder, don't
+       leave it in after returning it.
+       (EmitContext.FreeTemporaryLocal): Simplify.  Update to changes.
+
+2006-08-06  Marek Safar  <marek.safar@seznam.cz>
+
+       * expresssion.cs (IndexerAccess.DoResolve): Fixed to report correct error
+       message.
+
+2006-08-05  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (TypeContainer.AddPartial): Add check for partial declarations
+       with different type names.
+       (TypeContainer.UpdateTypeParameterConstraints): Updated an error message.
+
+2006-08-03  Raja R Harinath  <rharinath@novell.com>
+
+       Fix cs0146-3.cs and cs0146-4.cs.
+       * class.cs (TypeManager.CheckRecursiveDefinition): Check that
+       enclosing types don't depend on the current type.
+
+2006-08-02  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #77963
+       * class.cs (TypeContainer.DoDefineMembers): Use
+       FindBaseMemberWithSameName on Parent, since we're interested in
+       whether we hide inherited members or not.
+       (FindBaseMemberWithSameName): Make slightly more robust.
+
+       Fix #77396
+       * codegen.cs (IResolveContext.GenericDeclContainer): New.
+       (EmitContext): Implement new interface requirement.
+       * namespace.cs (UsingEntry, LocalAliasEntry): Likewise.
+       * decl.cs (MemberCore): Likewise.
+       (DeclSpace.GenericDeclContainer): Rename from DeclContainer.
+       * ecore.cs (SimpleName.ResolveAsTypeTerminal): Use
+       ec.GenericDeclContainer to check for generic parameters.
+       (SimpleName.DoSimpleNameResolve): Likewise.
+       * generic.cs (TypeParameter.DeclContainer): Remove override.
+
+       * namespace.cs (NamespaceEntry.Doppelganger): Create slave
+       declspaces for doppelgangers too.
+       (UsingEntry): Implement IResolveContext.
+       (UsingEntry.Resolve): Don't set ToplevelTypes.Namespace.  Use
+       'this' as the resolve context.
+       (LocalAliasEntry): Likewise.
+
+       Implement parts of #77403
+       * roottypes.cs (RootDeclSpace): New.  Used to represent the
+       toplevel declaration space.  Each namespace declaration introduces
+       a "partial" root declaretion space.
+       * namespace.cs (NamespaceEntry.SlaveDeclSpace): New.
+       (NamespaceEntry.ctor): Create a SlaveDeclSpace if necessary.
+       * cs-parser.jay (CSharpParser.ctor): Initialize 'current_class'
+       from 'current_namespace.SlaveDeclSpace'.
+       (namespace_declaration): Likewise.
+       * class.cs (TypeContainer.ctor): Remove parent==ToplevelTypes
+       check.  It can't happen now.
+       * decl.cs (DeclSpace.LookupType): Likewise.
+       * driver.cs (MainDriver): Sanity check.
+
+2006-08-01  Raja R Harinath  <rharinath@novell.com>
+
+       * decl.cs (DeclSpace.FindNestedType): Remove.
+       (DeclSpace.LookupNestedTypeINHierarchy): Use PartialContainer and
+       LookupTypeContainer to get the container of the nested type.
+       * class.cs (TypeContainer.FindNestedType): Make non-override.
+
+2006-07-31  Raja R Harinath  <rharinath@novell.com>
+
+       * decl.cs (DeclSpace.PartialContainer): Move field from ...
+       * class.cs (TypeContainer.PartialContainer): ... here.
+       (TypeContainer.AddBasesForPart): New helper.
+       (MemberBase.ParentContainer): Remove.  Use Parent.PartialContainer
+       instead.
+       * cs-parser.jay (current_class): Convert to DeclSpace.
+       (struct_declaration, interface_declaration, class_declaration):
+       Use AddBasesForPart instead of .Bases directly.
+       * const.cs, iterators.cs: Update to changes.
+
+2006-07-28  Raja R Harinath  <rharinath@novell.com>
+
+       * class.cs (TypeContainer.AddMemberType): Rename from
+       AddToTypeContainer.
+       (TypeContainer.AddMember): Rename from AddToMemberContainer.
+       (AddTypeContainer): New.  Combine AddClassOrStruct and
+       AddInterface.
+       (AddPartial): Update.  Add 'is_partial' argument.
+       * roottypes.cs: Update to changes.
+       * cs-parser.jay (push_current_class): New helper for handling
+       current_container and current_class.
+       (struct_declaration, interface_declaration, class_declaration):
+       Use it.
+
+2006-07-26  Raja R Harinath  <rharinath@novell.com>
+
+       * roottypes.cs: Rename from tree.cs.
+
+       Rename RootContext.Tree.Types to RootContext.ToplevelTypes.
+       * tree.cs (Tree, ITreeDump): Remove types.
+       * rootcontext.cs (tree, Tree): Remove fields.
+       (root, ToplevelTypes): New.
+       * *.cs: Update to rename.
+
+       * tree.cs (Tree.RecordDecl): Remove.
+       (RootTypes.AddToTypeContainer): Record the toplevel type in its
+       namespace here.
+       * class.cs, cs-parser.jay: Remove mention of RecordDecl.
+
+2006-07-23  Raja R Harinath  <harinath@gmail.com>
+
+       * codegen.cs (EmitContext.Flags): Move InCatch, InFinally,
+       DoFlowAnalysis and OmitStructFlowAnalysis here.
+       (ec.With): Rename from WithUnsafe and generalize.
+       (ec.WithCheckState): Remove.  All users can be handled by 'With'.
+       (ec.WithFlowAnalyis): New.
+       * ecore.cs, expression.cs, statement.cs: Update.
+
+2006-07-22  Raja R Harinath  <harinath@gmail.com>
+
+       * statement.cs (Block.ResolveMeta): Simplify slightly.
+
+       * codegen.cs (EmitContext.Flags): New enum.  Used to represent the
+       multiple boolean fields.  Convert InUnsafe, constant_check_state,
+       check_state to flags.
+       (CheckState, ConstantCheckState): Update.
+       (InUnsafe): New read-only property.
+       (FlagsHandle): Rename from CheckStateHandle and convert to handle
+       arbitrary flags.
+       (WithUnsafe): New helper similar to WithCheckState.
+       * statement.cs (Block.ResolveMeta): Use WithUnsafe.
+       (Unsafe.Resolve, Unsafe.DoEmit): Likewise.
+
+2006-07-21  Raja R Harinath  <rharinath@novell.com>
+
+       Make comparisons use the same IL irrespective of whether they're
+       in a 'checked' or 'unchecked' context: one of the issues in #78899
+       * codegen.cs (EmitContext.CheckState): Make read-only property.
+       (EmitContext.ConstantCheckState): Likewise.
+       (EmitContext.CheckStateHandle, EmitContext.WithCheckState): New
+       helper that implement a save/restore stack for CheckState
+       values.  This is the only way to change check-state.
+       * ecore.cs (Expression.ExpressionToArrayArgument): Use WithCheckState.
+       * expression.cs (CheckedExpr.DoResolve, CheckedExpr.Emit): Likewise.
+       (CheckedExpr.EmitBranchable): New forwarding method.
+       (UnCheckedExpr): Likewise.
+       * statement.cs (Block.ResolveMeta): Use WithCheckState.
+       (Unchecked.Resolve, Unchecked.DoEmit): Likewise.
+       (Checked.Resolve, checked.DoEmit): Likewise.
+
+2006-07-21  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (TypeManager.InferType): When inferring an array
+       type, also allow IList<T> and ICollection<T>.  Fixes #78900.
+
+2006-07-21  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (TypeManager.IsIEnumerable): Renamed into IsIList()
+       and allow IList`1 and all its base interfaces.
+
+       * convert.cs (Convert.ImplicitReferenceConversion): Allow
+       converting from an array-type of T to IList<T>.
+
+2006-07-21  Martin Baulig  <martin@ximian.com>
+
+       * ecore.cs (SimpleName.DoSimpleNameResolve): Added CS0307 check.
+
+2006-07-20  Miguel de Icaza  <miguel@novell.com>
+
+       * anonymous.cs: Cache the resolved anonymous delegate, and return
+       this so that the ResolveTopBlock is only triggered once, not
+       twice.
+
+       Currently we trigger ResolvetopBlock twice due to a first pass of
+       argument check compatibility, and a second pass that does the
+       actual resolution.   
+
+2006-07-15  Marek Safar  <marek.safar@seznam.cz>
+
+       * annonymous.cs (AnonymousMethod.CreateScopeType): Fixed nested type
+       modifiers.
+       * rootcontext.cs (Reset): Add helper_classes.
+
+2006-07-15  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #78860
+       * statement.cs (Switch.SimpleSwitchEmit): Handle case null at any position
+       correctly.
+
+2006-07-13  Miguel de Icaza  <miguel@novell.com>
+
+       * statement.cs (Lock): Handle expressions of type
+       TypeManager.null_type specially.  Fixes #78770
+
+2006-07-08  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (Binary.ResolveOperator): Don't crash when null is assigned
+       to an event.
+
+2006-07-08  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (AttributeTester.GetMethodObsoleteAttribute): Fixed to look
+       for accessors as well.
+       * ecore.cs (EventExpr): Add AccessorTable.
+
+2006-07-03  Martin Baulig  <martin@ximian.com>
+
+       * ecore.cs (UnboxCast.Emit): Also use `Unbox_Any' for generic
+       instances of value types.
+
+       * convert.cs (Convert.ExplicitConversion): Correctly handle
+       object->nullable conversions.   
+
+2006-07-01  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #78738
+       * attribute.cs, class.cs, ecore.cs : Add missing location of related symbol
+       for CS0122 where appropriate.
+       * typemanager.cs (IsNestedChildOf): Type can be null in the case of top
+       level attributes.
+       (Filter): Assembly can be null in the case of top level attributes.
+
+2006-06-28  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #78716
+       * generic.cs (TypeManager.InferParamsTypeArguments): If there are
+       no arguments, return 'false': nothing can be inferred.
+
+2006-06-25  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #78690
+
+       * ecore.cs (Expression.MemberLookupFailed): Don't crash when failed lookup
+       is done at global level.
+
+2006-06-24  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77002, Implemented TypeForwarder support.
+
+       * attribute.cs (Attribute.GetArgumentType): Reads type argument.
+       * codegen.cs (AssemblyClass.ApplyAttributeBuilder): Add TypeForwarder
+       attribute handling.
+       * expression.cs (TypeOf.TypeArgument): Exposes typeof type.
+       * typemanager.cs (): Add type_forwarder_attr_type.
+
+2006-06-24  Marek Safar  <marek.safar@seznam.cz>
+
+       * report.cs: Add CS0469 warning.
+
+2006-06-22  Martin Baulig  <martin@ximian.com>
+
+       * class.cs
+       (TypeContainer.GetNormalBases): Also use ResolveAsBaseTerminal()
+       for interfaces; fixes #78686, which is a modification of #78380
+       with interfaces instead of classes.
+
+2006-06-21  Martin Baulig  <martin@ximian.com>
+
+       * codegen.cs (CodeGen.Save): Moved the symbol file generation into
+       the `try'-block, so we also report CS0016 etc. there.
+
+2006-06-21  Martin Baulig  <martin@ximian.com>
+
+       * ecore.cs (FieldExpr.EmitAssign, FieldExpr.AddressOf): Correctly
+       handle SetAssigned() and SetMemberIsUsed() for generic types;
+       fixes #77545.
+
+2006-06-21  Martin Baulig  <martin@ximian.com>
+
+       * delegate.cs
+       (Delegate.VerifyMethod): Allow `params' methods; fixes #78678.
+
+2006-06-21  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (Unary.ResolveOperator): In `Operator.AddressOf',
+       also report CS1686 for parameters.
+
+2006-06-21  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs (GotoCase.Resolve): Report a warning (CS0469)
+       instead of an error if the value is not implicitly convertible to
+       the switch types; fixes #77964.
+
+2006-06-21  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #78673
+       * class.cs (FieldBase.ResolveInitializer): Stop resolution if
+       FieldBuilder is null.
+
+       Fix #78662
+       * expression.cs (Binary.CheckShiftArguments): Don't overwrite original
+       'left' and 'right' before error-checking.
+
+2006-06-19  Martin Baulig  <martin@ximian.com>
+
+       * convert.cs
+       (Convert.ImplicitConversionStandard): Cleanup and correctly
+       implement nullable conversions.
+       (Convert.ImplicitStandardConversionExists): Likewise.
+       (Convert.ExplicitConversion): Likewise.
+
+2006-06-19  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (Nullable.Wrap.Create, Nullable.Unwrap.Create): New public static
+       methods; make the ctors protected.
+
+2006-06-19  Martin Baulig  <martin@ximian.com>
+
+       Fixed #78380; added gtest-273.cs.
+
+       * ecore.cs
+       (Expression.ResolveAsBaseTerminal): Move the constraint checking
+       into ResolveAsTypeTerminal().
+
+       * generic.cs
+       (ConstraintChecker.HasDefaultConstructor): Use the non-cache based
+       TypeManager.FindMembers() to check for the default ctor.
+
+2006-06-18  Marek Safar  <marek.safar@seznam.cz>
+
+       * generic.cs: Fixed NullableInfo accessibility.
+
+2006-06-16  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (Constraints.InflatedConstraints.inflate): Correctly inflate
+       generic types; fixes #78400.
+
+2006-06-16  Juraj Skripsky  <js@hotfeet.ch>
+
+       * ecore.cs (SimpleName.Error_ObjectRefRequired): Do not truncate the name.
+       Fixed bug #78601.
+       (MemberExpr.EmitInstance): Use GetSignatureForError () to get full name.
+       (FieldExpr.DoResolve): likewise.
+       (PropertyExpr.InstanceResolve): likewise.
+       (EventExpr.InstanceResolve): likewise. 
+
+2006-06-15  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs
+       (SwitchLabel.ResolveAndReduce): Added `bool allow_nullable'
+       argument; always allow a `null' label if true.
+       (Switch.SwitchGoverningType): Take an `Expression expr' argument.
+       (Switch.TableSwitchEmit, Switch.SimpleSwitchEmit): Check whether
+       we have a `null' label and mark the new `null_target' label;
+       default to the `default' label.
+       (Switch.Resolve): Add support for nullable types.  Fixes #78630.
+
+2006-06-15  Martin Baulig  <martin@ximian.com>
+
+       * class.cs (Operator.Define): Allow an implicit/explicit operator
+       to convert to/from a nullable value of the enclosing type.
+
+       * generic.cs (TypeManager.IsNullableTypeOf): New public method.
+       (Nullable.Unwrap, Nullable.Wrap): Make these classes public.
+
+       * convert.cs
+       (Convert.ImplicitStandardConversionExists): Add support for lifted
+       implicit/explicit conversions.
+       (Convert.ImplicitConversionStandard): Likewise.
+
+2006-06-13  Martin Baulig  <martin@ximian.com>
+
+       * ecore.cs (SimpleName.DoSimpleNameResolve): Check whether we have
+       type arguments and create a ConstructedType if necessary.  Fixes #78400.
+
+2006-06-04  Marek Safar  <marek.safar@seznam.cz>
+
+       * parameter.cs (Parameter.ApplyAttributeBuilder): More DefaultValue
+       attribute applicable tests for attribute argument.
+
+2006-06-02  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #78079
+       * expression.cs (Binary.DoNumericPromotions): Remove and rewrite.
+       (Binary.OverloadResolve_PredefinedIntegral): New.
+       (Binary.OverloadResolve_PredefinedFloating): New.
+       (Binary.OverloadResolve_PredefinedString): New.
+       (Binary.ResolveOperator): Use those instead of DoNumericPromotions.
+       Follow the standard more closely, and treat numeric promotions in
+       terms of overload resolution.
+       (Binary.CheckShiftArguments): Simplify.
+
+2006-06-01  Raja R Harinath  <rharinath@novell.com>
+
+       * flowanalysis.cs (MyBitVector): Simplify representation.
+       (MyBitVector.Clone): Avoid allocating BitArray.
+       (MyBitVector.operator&): Rename from MyBitVector.And and make symmetric.
+       (MyBitVector.operator|): Likewise, with MyBitVector.Or.
+       (*): Update.  Change all references to MyBitVector.And and
+       MyBitVector.Or to &= and |=.
+
+2006-05-31  Raja R Harinath  <rharinath@novell.com>
+
+       * generic.cs (Nullable.LiftedBinaryOperator.EmitEquality):
+       Use bne.un instead of ceq+brfalse.
+
+       Fix cs0208-[23].cs
+       * typemanager.cs (IsUnmanagedType): Disallow generic types and
+       generic parameters.
+
+2006-05-29  Raja R Harinath  <rharinath@novell.com>
+
+       Fix cs0231-[34].cs.
+       * cs-parser.jay (formal_parameter_list): Extend the pattern below
+       to param arguments too.
+
+2006-05-26  Miguel de Icaza  <miguel@novell.com>
+
+       * cs-parser.jay: Catch another parsing form for arglist being
+       followed by other arguments.  Fixes #78313.
+
+2006-05-25  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #78324
+       * expression.cs (Binary.DoResolve): Use Nullable.LiftedBinaryOperator
+       also when one of the operands is a null literal.
+       * generic.cs (Nullable.LiftedBinaryOperator.EmitEquality): Rewrite
+       to improve clarity, and generate slightly better code.
+
+2006-05-24  Raja R Harinath  <rharinath@novell.com>
+
+       * flowanalysis.cs (FlowBranchingToplevel.AddReturnOrigin): Move
+       checking of out parameters to ...
+       (FlowBranchingToplevel.Merge): ... here.
+       (FlowBranchingException.AddBreakOrigin): If 'finally_vector' is
+       set, propagate the origin upward, and only complain if there was
+       no other error.
+       (FlowBranchingException.AddContinueOrigin): Likewise.
+       (FlowBranchingException.AddReturnOrigin): Likewise.
+       (FlowBranchingException.AddGotoOrigin): Likewise.       
+
+2006-05-23  Raja R Harinath  <rharinath@novell.com>
+
+       * flowanalysis.cs (UsageVector.MergeOrigins): If an origin is
+       unreachable, skip it.
+       (FlowBranchingException.Merge): Always propagate jumps, even if
+       the finally block renders subsequent code unreachable.
+
+2006-05-18  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #77601
+       * statement.cs (Goto.Resolve): Move responsibility for resolving
+       'goto' to FlowBranching.AddGotoOrigin.
+       (Goto.SetResolvedTarget): New.  Callback to set the
+       LabeledStatement that's the target of the goto.
+       (Goto.DoEmit): Use Leave instead of Br when crossing an
+       unwind-protect boundary.
+       * flowanalysis.cs (FlowBranching.AddGotoOrigin): Rename from
+       LookupLabel and adjust to new semantics.
+       (FlowBranchingToplevel.AddGotoOrigin): Likewise.
+       (FlowBranchingBlock.AddGotoOrigin): Likewise. Use
+       Goto.SetResolvedTarget to update target.
+       (FlowBranchingLabeled.AddGotoOrigin): Likewise.
+       (FlowBranchingException.AddGotoOrigin): Rewrite to be similar to
+       AddBreakOrigin & co.  Delay propagation until ...
+       (FlowBranchingException.Merge): ... this.
+
+       * statement.cs (Block.Resolve): Always depend on flow-branching to
+       determine unreachability.  Kill workaround that originally emitted
+       only one statement after an "unreachable" label (see infloop in
+       test-515.cs).
+
+       Fix #77869, #76148, #77755, #75255 and a host of other bugs.
+       This is still "wrong", but anything better would probably need a
+       multi-pass algorithm.
+       * flowanalysis.cs (FlowBranchingLabeled): Salt away a copy of the
+       usage vector.  Force current usage vector to be reachable, to
+       optimistically signify backward jumps.
+       (FlowBranchingLabeled.LookupLabel): Note if a backward jump is
+       detected.
+       (FlowBranchingLabeled.Merge): New.  If no backward jump was
+       detected, return the original salted-away usage vector instead,
+       updated with appropriate changes.  Print unreachable warning if
+       necessary.
+       * statement.cs (Block.Resolve): Don't print unreachable warning on
+       a labeled statement.
+
+2006-05-17  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * driver.cs: Pass filename without path to AssemblyBuilder's
+       AddResourceFile. Fixes bug #78407.
+
+2006-05-17  Raja R Harinath  <rharinath@novell.com>
+
+       * statement.cs (LabeledStatement.Resolve): Move merging of origins ...
+       * flowanalysis.cs (FlowBranchingLabeled): ... here.
+       (FlowBranching.MergeChild): Overwrite
+       reachability information from Labeled branchings too.
+
+2006-05-16  Raja R Harinath  <rharinath@novell.com>
+
+       * statement.cs (Goto.Resolve): Merge jump origins here ...
+       * flowanalysis.cs (FlowBranching.Label): ... rather than here.
+
+       * flowanalysis.cs (FlowBranching.LookupLabel): Move CS0159 check ...
+       (FlowBranchingToplevel.LookupLabel): ... here.  Add CS1632 check.
+       (FlowBranchingGoto.LookupLabel): New.  Handle back jumps.
+       (FlowBranchingBlock.LookupLabel): Call LabeledStatement.AddReference
+       here, ...
+       * statement.cs (Goto.Resolve): ... not here.
+       (Goto.Emit): Remove CS1632 check.
+
+2006-05-14  Marek Safar  <marek.safar@seznam.cz>
+
+       * ecore.cs (Expression.ResolveAsTypeTerminal): Fixed type in the obsolete
+       error message.
+
+2006-05-11  Raja R Harinath  <rharinath@novell.com>
+
+       * flowanalysis.cs (UsageVector.MergeJumpOrigins): Kill.
+       (FlowBranchingBlock.Label): Use UsageVector.MergeOrigins.
+       (FlowBranchingException.Label): Likewise.
+
+       * flowanalysis.cs (MyBitVector.SetAll): New.  Sets all bits to the
+       given value.
+       (MyBitVector.Or): Use it to avoid losing information (Count).
+       (FlowBranching.MergeOrigins): Likewise.
+
+       * flowanalysis.cs (UsageVector.IsDirty): Remove.
+       (UsageVector.Parameters, UsageVector.ParameterVector): Likewise.
+       (UsageVector.Locals, UsageVector.LocalVector): Likewise.
+       (UsageVector.ToString): Simplify.
+       (UsageVector.MergeSiblings): Move here from ...
+       (FlowBranching.Merge): ... here.
+       (FlowBranchingToplevel.CheckOutParameters): Take an UsageVector,
+       not a MyBitVector.
+
+2006-05-10  Raja R Harinath  <rharinath@novell.com>
+
+       * flowanalysis.cs (UsageVector.MergeOrigins): Simplify, now that a
+       null bitvector is treated as all-true.
+
+       * flowanalysis.cs (MyBitVector.And, MyBitVector.Or): Make lazier.
+       (MyBitVector): Rationalize invariants.  'vector != null' implies
+       that we have our own copy of the bitvector.  Otherwise,
+       'InheritsFrom == null' implies all inherited bits are true.
+
+2006-05-09  Marek Safar  <marek.safar@seznam.cz>
+
+       * statement.cs (LocalInfo): Add IsConstant.
+       (LocalInfo.DeclareLocal): Moved from EmitMeta and changed to don't emit
+       local variable for constants.
+
+2006-05-09  Raja R Harinath  <rharinath@novell.com>
+
+       * flowanalysis.cs (MyBitVector.Empty): New.
+       (MyBitVector): Don't allow InheritedFrom to be null.
+       (MyBitVector.And, MyBitVector.Or): Treat 'null' as all-ones.
+       (UsageVector, FlowBranching): Update to changes.
+
+       * flowanalysis.cs (FlowBranching.InTryWithCatch): Don't terminate
+       recursion.  The 'Parent == null' condition isn't sufficient for
+       anonymous methods.
+       (FlowBranching.AddBreakOrigin): Likewise.
+       (FlowBranching.AddContinueOrigin): Likewise.
+       (FlowBranching.AddReturnOrigin): Likewise.
+       (FlowBranching.StealFinallyClauses): Likewise.
+       (FlowBranching.MergeTopBlock): Move to FlowBranchingToplevel.
+       (FlowBranching.CheckOutParameters): Likewise.
+       (FlowBranchingToplevel): Terminate all the above recursions here.
+       (FlowBranchingToplevel.End): Rename from MergeTopBlock.
+       * codegen.cs (EmitContext.ResolveTopBlock): Update to changes.
+
+       * flowanalysis.cs (BranchingType.Toplevel): New.  Represents a
+       toplevel block.
+       (FlowBranchingToplevel): New.  Empty for now.
+       (FlowBranching.MergeTopBlock): Update.
+       * codegen.cs (EmitContext.ResolveTopBlock): Create a Toplevel
+       branching for the anonymous delegate.
+       (EmitContext.StartFlowBranching): Add ToplevelBlock variant.
+
+       * flowanalysis.cs (UsageVector.MergeOrigins): Reorganize.
+       (UsageVector.MergeJumpOrigins): Don't ignore current reachability
+       information at the start of the merge.  Reorganize.
+
+2006-05-07  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (MethodData.Define): Method cannot implement interface accessor.
+
+2006-05-07  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (QualifiedAliasMember.ResolveAsTypeStep): Pass location
+       to newly introduced ctor.
+
+       * namespace.cs (Namespace.Error_NamespaceDoesNotExist): Moved an error
+       message to one place.
+       (GlobalRootNamespace.Error_NamespaceDoesNotExist): Custom message for
+       global namespace.
+
+2006-05-07  Marek Safar  <marek.safar@seznam.cz>
+
+       * const.cs (Const.Error_ExpressionMustBeConstant): Better error message.
+
+       * ecore.cs (Expression.ResolveAsConstant): Updated.
+
+       * statement.cs (ResolveMeta): Updated.
+
+2006-05-06  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-parser.jay: __arglist cannot be used in initializer.
+
+2006-05-06  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77879
+       * namespace.cs (LocalAliasEntry.DoResolve): Don't allow to access nested
+       private types.
+
+2006-05-05  Raja R Harinath  <rharinath@novell.com>
+
+       * statement.cs (EmptyStatement.ResolveUnreachable): Override.
+       (LabeledStatement): Add 'name' parameter.
+       (LabeledStatement.Name, LabeledStatement.JumpOrigins): New.
+       (Block.AddLabel): Update to changes.
+       * cs-parser.jay (labeled_statement): Likewise.
+
+       * flowanalysis.cs (BranchingType.Labeled): New.
+       (UsageVector.MergeOrigins): Remove unused 'branching' argument.
+       (FlowBranchingLabeled): New.  Does nothing for now, but will
+       eventually handle 'goto' flows.
+       * codegen.cs (StartFlowBranching): Add new LabeledStatement variant.
+       * statement.cs (LabeledStatement.Resolve): Create a FlowBranching
+       that's terminated ...
+       (Block.Resolve): ... here.
+
+       * flowanalysis.cs (UsageVector.MergeFinally): Remove.
+       (UsageVector.MergeFinallyOrigins): Likewise.
+       (FlowBranching.InTryOrCatch): Likewise.
+       (FlowBranching.AddFinallyVector): Likewise.
+       (FlowBranchingException): Update to changes.
+
+       Fix #78290
+       * statement.cs (Return.Resolve): Move error checking to ...
+       * flowbranching.cs (FlowBranching.AddReturnOrigin): ... this.
+       (FlowBranchingException): Handle return origins like break and
+       continue origins.
+       (FlowBranching.UsageVector.CheckOutParameters): Remove.
+
+2006-05-04  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #76122
+       * class.cs (TypeContainer.FindMembers): Includes event method in the methods
+       filter.
+
+2006-05-04  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77543
+       * class.cs (MethodData.Define): Do public accessor check only when method
+       implements an interface.
+
+2006-05-04  Raja R Harinath  <rharinath@novell.com>
+
+       Remove special handling of 'break'
+       * flowanalysis.cs (Reachability): Remove all mention of 'breaks'.
+       (Reachability.Meet): Simplify.  Remove 'do_breaks' argument.
+       (UsageVector.Break): Remove.
+       (FlowBranching.Merge): Use 'Reachable.IsUnreachable' to determine
+       reachability.
+       (FlowBranchingBreakable.Merge): Don't ResetBreaks.
+
+       * statement.cs (Break.Resolve): Call UsageVector.Goto (), not
+       UsageVector.Breaks ().  Don't set NeedsReturnLabel.
+
+2006-05-03  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #75726
+       * pending.cs (PendingImplementation.BaseImplements): A found member cannot
+       be the interface member.
+
+2006-05-03  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #60069
+       * constant.cs (LongConstant.EmitLong): Fixed to catch also negative values
+       for emitting small (int) values.
+
+2006-05-03  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #59427
+       * flowanalysis.cs (FlowBranchingException.Merge): Ensure
+       control-flow passes through the 'finally' after merging-in all the
+       control-flows from 'try' and the 'catch' clauses.
+
+       * flowanalysis.cs (FlowBranching.IsLoop): Remove.
+       (FlowBranching.IsTryOrCatch): Remove 'is_return' parameter.  It's
+       always true at the only non-recursive entry point.
+       (FlowBranching.CreateBranching) [BranchingType.Loop]: Return a
+       FlowBranchingBreakable.
+       (FlowBranchingLoop): Remove.
+       * statement.cs (Return.DoResolve): Update to changes.
+
+       Fix #76471, #76665
+       * flowanalysis.cs (FlowBranching.BranchingType.Embedded): New.
+       (FlowBranching.CreateBranching): Handle it: create a
+       FlowBranchingContinuable.
+       (FlowBranching.BreakCrossesExceptionBoundary): Remove.
+       (FlowBranching.AddContinueOrigin): Similar to AddBreakOrigin,
+       except that it handles the 'continue' command.
+       (FlowBranching.UsageVector.MergeOrigins): Rename from
+       MergeBreakOrigins.
+       (FlowBranchingContinuable): Similar to FlowBranchingBreakable,
+       except that it overrides AddContinueOrigin.
+       (FlowBranchingException): Override AddContinueOrigin, similar to
+       AddBreakOrigin.
+       * statement.cs (While.Resolve, Foreach.ArrayForeach.Resolve):
+       Create a new branching around the embedded statement.
+       (Do.Resolve, For.Resolve): Likewise.  Do reachability analysis for
+       control flow after the embedded statement.
+       (Continue.Resolve): Move all error checking to AddContinueOrigin.
+
+       * flowanalysis.cs (FlowBranching.IsSwitch): Remove.
+       (FlowBranching.CreateBranching) [BranchingType.Switch]: Create a
+       FlowBranchingBreakable.
+       (FlowBranchingSwitch): Remove.
+
+       Fix test-503.cs
+       * statement.cs (Break.Resolve): Simplify.  Move responsibility for
+       error reporting to ...
+       * flowanalysis.cs (FlowBranching.AddBreakOrigin) ... this.
+       Rename from 'AddBreakVector'.  Add new location argument.  Return
+       a bool indicating whether the 'break' crosses an unwind-protect.
+       (FlowBranchingException.AddBreakOrigin): Add.
+       (FlowBranchingException.Merge): Propagate 'break's to surrounding
+       flowbranching after updating with the effects of the 'finally'
+       clause.
+       (FlowBranchingBreakable): New common base class for
+       FlowBranchingLoop and FlowBranchingSwitch.
+
+       * statement.cs (Foreach.ArrayForeach.Resolve): Set barrier after
+       embedded statement.
+       (Foreach.CollectionForeach.Resolve): Remove extraneous flowbranching.
+
+2006-05-02  Raja R Harinath  <rharinath@novell.com>
+
+       * statement.cs (Do.Resolve): If the loop is infinite, set the
+       barrier.
+       (While.Resolve, For.Resolve): Set a barrier after the embedded
+       statement.  There's no direct control flow that goes from the end
+       of the embedded statement to the end of the loop.
+       * flowanalysis.cs (FlowBranching.Infinite): Remove.
+       (FlowBranchingLoop.Merge): Don't look at 'Infinite'.  The changes
+       above ensure that the reachability is correctly computed.
+
+       * flowanalysis.cs (Reachability.ResetBarrier): Remove.
+       (UsageVector.MergeBreakOrigins): If the current path is
+       unreachable, treat it as if all parameters/locals are initialized.
+       (FlowBranchingLoop.Merge): Don't clear any barriers.  Handle
+       infinite loops before merging-in break origins.
+
+       * flowanalysis.cs (Reachability.Meet): Simplify code handling 'returns'.
+       (Reachability.Reachable): Split part into ...
+       (Reachability.Unreachable): ... this.  Simplify.
+       (Reachability.IsUnreachable): Use 'Unreachable' instead.
+
+       * flowanalysis.cs (Reachability.SetReturnsSometimes): Remove.
+       (Reachability.SetThrowsSometimes): Likewise.
+       (FlowBranchingBlock.MergeTopBlock): Don't compare against
+       TriState.Always, use corresponding property.
+       * statement.cs (Lock.Resolve, Try.Resolve, Using.Resolve): Likewise.
+       (Block.Resolve): Likewise.  Remove some redundant checks.
+
+2006-05-02  Raja R Harinath  <harinath@gmail.com>
+
+       * flowanalysis.cs (UsageVector.Throw): Set barrier too.
+       (Reachability.Meet): Don't bother checking AlwaysThrows --
+       barrier is always set.
+       (FlowBranchingBlock.Merge): Likewise.
+
+2006-05-01  Rafael Teixeira <rafaelteixeirabr@hotmail.com>
+
+       * attribute.cs: fixed_buffer_cache is declared only if NET_2_0 is
+       defined, so it's references should also compile only for NET_2_0
+       (as occurs in mcs version)
+
+2006-05-01  Raja R Harinath  <harinath@gmail.com>
+
+       * codegen.cs (EmitContext.ResolveTopBlock): Remove redundant
+       checks for unreachable.
+
+2006-05-01  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77980
+       * flowanalysis.cs (UsageVector.IsAssigned): Add flag to ignore short path.
+
+       * statement.cs (Block.UsageWarning): Uses newly introduced flag to detect
+       whether field is really assigned.
+
+2006-04-30  Raja R Harinath  <harinath@gmail.com>
+
+       * flowanalysis.cs (Reachability): Make 4-argument constructor
+       private.
+       (Reachability.Meet): Rename from 'And'.  Remove static variant.
+       (Reachability.Always): Rename from the highly misleading
+       'Reachability.Never'.
+       (FlowBranching.Merge): Update to changes.  Mark an impossible
+       situation with a 'throw'.
+       (*): Update to changes.
+
+2006-04-29  Raja R Harinath  <harinath@gmail.com>
+
+       * flowanalysis.cs (TriState): Rename from FlowBranching.FlowReturns.
+       Remove 'Undefined'.
+       (FlowBranching.TriState_Meet): Rename from AndFlowReturns. Simplify.
+       (FlowBranching.TriState_Max): Rename from OrFlowReturns. Simplify.
+       (*): Update to changes.
+       * statement.cs: Update to changes.
+
+2006-04-28  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #78049
+       *class.cs (Method.FindOutBaseMethod): Base method cannot be property method.
+
+2006-04-28  Raja R Harinath  <harinath@gmail.com>
+
+       * flowanalysis.cs (FlowBranching.MergeTopBlock): Don't create a
+       dummy UsageVector.
+
+       * flowanalysis.cs (UsageVector.MergeChild): Change FlowBranching
+       argument to two arguments: an usage-vector and a bool.  Move call
+       to FlowBranching.Merge () ...
+       (FlowBranching.MergeChild, FlowBranching.MergeTopBlock): ... here.
+
+       * flowanalysis.cs (UsageVector.MergeChild): Move special-case
+       handling of loop and switch reachability to ...
+       (FlowBranchingLoop.Merge, FlowBranchingSwitch.Merge): ... these.
+
+2006-04-27  Raja R Harinath  <harinath@gmail.com>
+
+       * flowanalysis.cs (FlowBranching.InLoop): Move special-case
+       handling to FlowBranchingLoop.InLoop.
+       (FlowBranching.InSwitch): Likewise, to FlowBranchingSwitch.
+
+2006-04-26  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #78115
+       * anonymous.cs (AnonymousMethod.DoResolve): Moved the check whether
+       anonymous method is allowed from AnonymousContainer here.
+
+       * attribute.cs, codegen.cs (EmitContext): Add IsAnonymousMethodAllowed.
+
+2006-04-24  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #78156
+       * flowanalysis.cs (MyBitVector.Or): Add null check on argument.
+
+2006-04-23  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #49011.
+       * constant.cs (FloatConstant.Reduce): Add range checking for checked context.
+       (DoubleConstant.Reduce): Ditto.
+
+2006-04-23  Raja R Harinath  <rharinath@novell.com>
+
+       * expression.cs (LocalVariableReference.DoResolveBase): Simplify.
+       Remove 'lvalue_right_side' argument.  Move parts to ...
+       (LocalVariableReference.ResolveLocalInfo, LocalVariable.DoResolve)
+       (LocalVariable.DoResolveLValue): ... these.
+
+2006-04-21  Raja R Harinath  <rharinath@novell.com>
+
+       Fix cs1655.cs
+       * codegen.cs (EmitContext.InRefOutArgumentResolving): Remove.
+       * expression.cs (EmptyExpression.LValueMemberOutAccess): New.
+       (LocalVariableReference.DoResolveBase): Use it to implement new
+       CS1655 check.
+       (IndexerAccess.DoResolveLValue): Handle LValueMemberOutAccess.
+       (Argument.Resolve): Simplify.  Move CS1510 check ...
+       * ecore.cs (Expression.ResolveLValue): ... here.
+       (UnboxCast.DoResolveLValue): Handle LValueMemberOutAccess.
+       (PropertyExpr.DoResolveLValue): Likewise.
+       (FieldExpr.Report_AssignToReadonly): Likewise.
+       (FieldExpr.DoResolve): Add 'out_access' argument.  Use
+       LValueMemberAccess or LValueMemberOutAccess on instance depending
+       on it.
+       (FieldExpr.DoResolveLValue): Pass 'out_access' argument to
+       DoResolve as appropriate.
+
+2006-04-20  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75800
+       * expression.cs (Invocation.VerifyArgumentsCompat): Don't try
+       implicit conversions on 'out' and 'ref' arguments.
+
+       * expression.cs (Invocation.VerifyArgumentsCompat): Reorganize to
+       improve clarity.  Remove dead code.
+
+       Fix #66031
+       * statement.cs (Block.UsageWarning): Allow VariableInfo to be null.
+       (Catch.Resolve): Resolve VarBlock if it exists.
+
+2006-04-19  Miguel de Icaza  <miguel@novell.com>
+
+       * statement.cs (Foreach.EmitFinally): Do not emit the enumerator
+       twice, this was some residual code, the enumerator was emitted
+       properly in the two branche of if later.
+
+       Fixes #78031
+       
+       Thanks to Martin for finding the source of the problem
+       
+2006-04-19  Raja R Harinath  <rharinath@novell.com>
+
+       * expression.cs (Cast.ResolveLValue): Remove.  The result of a
+       cast is never an lvalue.
+       (Cast.DoResolve, Cast.ResolveRest): Combine.
+       (Argument.Emit): Simplify slightly.  Move 'Expr is
+       IMemoryLocation' check ...
+       (Argument.Resolve): ... here.
+       (Argument.Error_LValueRequired): Remove.  Inline into only user.
+
+       Simplifications.  Fix cs0191-2.cs
+       * ecore.cs (FieldExpr.DoResolve): Move handling of CS0192, CS0198,
+       CS1649 and CS1651 to ...
+       (FieldExpr.Report_AssignToReadonly): ... this.  Simplify by moving
+       the actual selection of the error code and message to a lookup
+       table.  Add a dummy return value to simplify callsites.
+       (FieldExpr.ResolveLValue): Don't allow a constructor to write to
+       readonly fields of other instances of the same type.  Move CS0197
+       warning from ...
+       * expression.cs (Argument.Resolve): ... here.  Simplify code.
+       Ensure that ec.InRefOutArgumentResolving is only set during LValue
+       resolution of an out or ref argument.  The code simplification
+       above uses this invariant.
+
+2006-04-18  Raja R Harinath  <rharinath@novell.com>
+
+       Possibly fix #77752.  Fix cs1690-[4-7].cs.
+       * ecore.cs (Expression.CheckMarshalByRefAccess): Renamed from
+       CheckMarshallByRefAccess.  Drop parameter.
+       (FieldExpr.CheckMarshalByRefAccess): Update.  Change CS1690 to a
+       warning.
+       (FieldExpr.DoResolve): Call CheckMarshalByRefAccess on
+       InstanceExpression.
+       * report.cs (AllWarnings): Add CS1690.
+       * expression.cs (Argument.Resolve): Use EmptyExpression.OutAccess
+       for ref access too.
+       (LocalVariableReference.DoResolveBase): Update.
+
+2006-04-09  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (MethodOrOperator): Moved common parts from method class.
+       detect obsolete attributes.
+       (Method.Define): Simplified as it reuses code from base.
+       (Constructor.ValidAttributeTargets): Fixed issue found during
+       refactoring.
+       (Destructor.ValidAttributeTargets): Fixed issue found during
+       refactoring.
+       (Operator): Finished refactoring set off by #78020. Operator class is now
+       ordinary method class.
+
+       * anonymous.cs: Updated.
+
+2006-04-09  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (Constructor.Emit): Don't emit the attributes twice.
+
+2006-04-09  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (Operator.Emit): Extracted code from MethodData to correctly
+       detect obsolete attributes.
+       (Method.CreateEmitContext): Moved to MethodOrOperator.
+
+2006-04-09  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #78048.
+       * class.cs (TypeContainer.MemberCoreArrayList.DefineContainerMembers): Throw
+       customized exception to make crash detection easier.
+       (MethodOrOperator): Started to work on new base class for methods and
+       operators.
+       (Method): Derives from MethodOrOperator.
+       (Constructor.Emit): Emits its own attributes.
+       (AbstractPropertyEventMethod.Emit): Ditto.
+       (Operator): Derives from MethodOrOperator, will refactor fully in extra
+       patch.
+       (Operator.Emit): It's temporary more tricky than should be.
+       
+       * doc.cs (GetMethodDocCommentName): Updated after operator changes.
+
+       * report.cs (InternalErrorException): Add ctor with inner exception.
+
+2006-04-08  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #76744.
+       * ecore.cs (SimpleName.ResolveAsTypeStep): Report better error when type is
+       only not visible.
+
+2006-04-07  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77916.
+       * expression.cs (ArrayCreation.GetAttributableValue): Creates correctly typed
+       array.
+
+2006-04-06  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (Class.ApplyAttributeBuilder): Report an error when ComImport
+       attribute is present and Guid not.
+       (Interface.ApplyAttributeBuilder): Ditto.
+
+       * attribute.cs: Add error message.
+
+2006-04-06  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #78020.
+
+       * attribute.cs (Attribute.AttachTo): The attribute can have multiple
+       sources (it's composite) so hold them in extra array as they are used in
+       Emit phase only. It worked in the previous versions by mistake.
+       (Attribute.Emit): Emit attribute for more owners when exist.
+
+       * codegen.cs, class.cs: Updated to don't re-attach attribute twice as now
+       it has now different behaviour.
+
+2006-04-04  Marek Safar  <marek.safar@seznam.cz>
+
+       * constant.cs (Constant.IsDefaultInitializer): New method.
+
+       * class.cs: Updated.
+
+       * expression.cs (ArrayCreation.CheckIndices): Add an optimization to don't
+       re-initialize default values. It saves KBs almost for every assembly.
+       Thanks Zoltan for the idea.
+       (ArrayCreation.ResolveInitializers): Renamed from ValidateInitializers.
+       (ArrayCreation.DoResolve): Resolve only once.
+       (ArrayCreation.Emit): Emit static initializer only when it is faster.
+       (ArrayCreation.GetAttributableValue): Cope with optimized values.
+
+2006-04-03  Zoltan Varga  <vargaz@gmail.com>
+
+       * report.cs (Warning, Error): Add 0-, 1-, and 2- argument specializations.
+       From #77961.
+
+2006-04-01  Marek Safar  <marek.safar@seznam.cz>
+
+       * assign.cs (Assign.DoResolve): Assignment to same variable can occur
+       in an embedded statement too.
+
+2006-04-01  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #77929
+       * typemanager.cs (IsNestedChildOf): Drop generic arguments before
+       testing.
+
+       Fix #77958
+       * statement.cs (Switch.EmitObjectInteger) [ulong]: Remove bad cast.
+
+       Fix #77962
+       * report.cs (SymbolRelatedToPreviousError): Drop generic type
+       arguments before checking whether a type is reflected or not.
+
+       Fix #77954
+       * expression.cs (Invocation.IsApplicable): Ensure a generic method
+       definition doesn't take part in overload resolution.
+       (Invocation.IsParamsMethodApplicable): Likewise.
+       (Invocation.OverloadResolve): When replacing a reflected override
+       method with its base definition, ensure that type arguments are
+       applied.
+
+2006-04-01  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77966.
+
+       * class.cs (TypeContainer.AddPartial): Don't report an error when modifier
+       was not specified.
+
+       * modifiers.cs: Add DEFAULT_ACCESS_MODIFER.
+
+2006-03-31  Marek Safar  <marek.safar@seznam.cz>
+
+       * assign.cs (LocalTemporary): Don't require ILGenerator in the resolve
+       phase.
+
+       * anonymous.cs, assign.cs, ecore.cs, expression.cs: Updated after
+       LocalTemporary change.
+
+       * class.cs (ClassOrStruct.DefineDefaultConstructor): Moved from
+       TypeContainer.
+       (ClassOrStruct.DefineFieldInitializers): Implemented static field
+       initializers optimization.
+       (ClassOrStruct.TypeAttr): Moved from modifiers.
+       (Constructor.CheckBase): Don't crash when static ctor has parameters.
+       (FieldBase.ResolveInitializer): Resolves initializer.
+       (FieldBase.HasDefaultInitializer): New property.
+
+       * cs-parser.jay: Removed message.
+
+       * expression.cs (CompilerGeneratedThis): New specialization.
+
+       * modifiers.cs (TypeAttr): Moved to ClassOrStruct.TypeAttr
+
+2006-03-28  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-parser.jay, cs-tokenizer.cs: On demand Stack allocation.
+
+2006-03-27  Marek Safar  <marek.safar@seznam.cz>
+
+       * ecore.cs (Expression.ResolveAsConstant): Clean up, enum constants should
+       be now EnumConstants only.
+
+2006-03-27  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs, driver.cs: Reset more caches.
+
+2006-03-26  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-tokenizer.cs (adjust_real): Uses float.Parse for float literals.
+
+2006-03-26  Marek Safar  <marek.safar@seznam.cz>
+
+       * constant.cs (Constant.Reduce): Replaced EmitContext with single bool
+       for easier reuse. Updated all overrides.
+       (IntegralConstant): New base class for all integral constants.
+       (IntegralConstant.Error_ValueCannotBeConverted): When assigned value if out
+       of the constant range, report custom error.
+       (UIntConstant.Reduce): Fixed uint conversion.
+
+       * ecore.cs, literal.cs: Reduce updates.
+
+2006-03-26  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #75813.
+
+       * class.cs (Constructor.Define): Removed extra if for default ctors.
+       A patch from Atsushi Enomoto.
+
+2006-03-26  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (Attribute.ResolveConstructor): Conversion was moved to
+       GetAttributableValue.
+
+       * constant.cs (Constant.GetAttributableValue): Does implicit conversion
+       when required.
+
+       * convert.cs (ImplicitConversionRequired): Error message moved to
+       DoubleLiteral.
+
+       * ecore.cs (Expression.GetAttributableValue): Add type parameter for
+       automatic implicit conversion of an output value.
+       (EnumConstant.GetAttributableValue): Don't reduce the enum constants.
+
+       * expression.cs (ArrayCreation.GetAttributableValue): Add element type
+       conversion.
+       (TypeOf.GetAttributableValue): Add extra handling for object type.
+
+       * literal.cs (DoubleLiteral.Error_ValueCannotBeConverted): Doubles can have
+       special error message.
+
+2006-03-25  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (Constructor.Emit): Don't crash when struct ctor is
+       InternalCall.
+       (Constructor.ApplyAttributeBuilder): Transform MethodImplAttribute to be
+       compatible with MS runtime.
+
+2006-03-23  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (Attribute.ResolveConstructor): Check for an invalid
+       attribute arguments here.
+
+       * class.cs (Indexer.Define): The check was moved to attribute class.
+
+2006-03-21  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (StringConcat.Append): Reverted back to no warning state.
+
+2006-03-21  Marek Safar  <marek.safar@seznam.cz>
+
+       * const.cs (Error_ConstantCanBeInitializedWithNullOnly): Share a message.
+
+       * statement.cs (Block.ResolveMeta): Look for wrong object constants in
+       the blocks too.
+
+2006-03-21  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc-bootstrap.cs : fix build.
+
+2006-03-20  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (StringConcat.Append): Issue a warning when empty string
+       is going to append.
+
+2006-03-20  Marek Safar  <marek.safar@seznam.cz>
+
+       * assign.cs (CompoundAssign.ResolveSource): Removed.
+
+       * attribute.cs (ResolvePossibleAttributeType): Updated after MemberAccess
+       clean up.
+
+       * class.cs (TypeContainer.FindMethods): Removed.
+       (TypeContainer.CheckMemberUsage): Made static.
+
+       * codegen.cs (GetAssemblyName): Uses Length for empty string test.
+
+       * constant.cs (CheckRange): Removed unused type argument.
+       (CheckUnsigned): Removed unused type argument.
+
+       * cs-parser.jay: Updated after MemberAccess clean up.
+       Uses Length for empty string test.
+
+       * cs-tokenizer.cs: Uses Length for empty string test.
+       (IsCastToken): Made static.
+       (is_hex): Made static.
+       (real_type_suffix): Made static.
+
+       * decl.cs (SetupCache): Made static.
+       (OnGenerateDocComment): Removed unused ds argument.
+
+       * delegate.cs (VerifyDelegate): Removed unused argument.
+
+       * doc.cs: Uses Length for empty string test.
+
+       * driver.cs: Uses Length for empty string test.
+
+       * enum.cs (IsValidEnumType): Made static
+
+       * expression.cs (EnumLiftUp): Removed unused argument.
+       (ResolveMethodGroup): Ditto.
+       (BetterConversion): Ditto.
+       (GetVarargsTypes): Ditto.
+       (UpdateIndices): Ditto.
+       (ValidateInitializers): Ditto.
+       (MemberAccess.ctor): Ditto.
+       (GetIndexersForType): Ditto.
+
+       * flowanalysis.cs: (MergeFinally): Removed unused argument.
+
+       * iterators.cs: Updated after MemberAccess clean up.
+
+       * location.cs: Uses Length for empty string test.
+
+       * namespace.cs: Uses Length for empty string test.
+
+        * report.cs (CheckWarningCode): Made static.
+
+       * statement.cs (LabeledStatement): Removed unused argument.
+
+       * typemanager.cs (FilterNone): Removed.
+
+2006-03-18  Marek Safar  <marek.safar@seznam.cz>
+
+       * codegen.cs (EmitContext.TestObsoleteMethodUsage): Removed as it become
+       obsolete.
+
+       * class.cs: Updated.
+
+2006-03-18  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-parser.jay.cs: __arglist is not allowed for delegates.
+
+2006-03-18  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77816.
+
+       * anonymous.cs.cs (AnonymousMethod): Add host to allow access to 
+       host container.
+       (AnonymousMethod.ImplicitStandardConversionExists): New method.
+       (AnonymousMethod.Compatible): Moved parameter resolving to DoResolve.
+       Add more error reporting; Fixed issue with params.
+
+       * convert.cs (ImplicitStandardConversionExists): Returned conversion check.
+
+       * cs-parser.jay: AnonymousMethod requires host container.
+
+       * delegate.cs (NewDelegate.DoResolve): Updated after Compatible changes.
+
+2006-03-18  Raja R Harinath  <harinath@gmail.com>
+
+       * class.cs: Change 'TypeContainer ds' constructor argument to
+       'DeclSpace parent'.  Some classes were missed below due to
+       different naming convention.
+
+       * class.cs (MemberCore.Parent): Delete.  This makes the
+       ParentContainer changes below enforceable by the compiler.
+
+       Treat pointers to enclosing declaration space as 'DeclSpace', not
+       'TypeContainer'.
+       * class.cs, const.cs, delegate.cs, enum.cs, iterator.cs: Change
+       'TypeContainer parent' constructor argument to 'DeclSpace parent'.
+
+       * statement.cs (LocalInfo..ctor): Use DeclSpace argument instead
+       of TypeContainer.
+       (Block.AddThisVariable): Likewise.
+       * class.cs (MethodData.Define, MethodData.Emit): Likewise.
+       (AbstractPropertyEventMethod.Emit): Likewise.
+       (AbstractPropertyEventMethod.EmitMethod): Likewise.
+       (GetMethod.Define, SetMethod.Define): Likewise.
+       (PropertyMethod.Define, DelegateMethod.Define): Likewise.
+       (DelegateMethod.EmitMethod): Likewise.
+
+       Fix regression test-partial-13.cs.
+       Rationalize use of PartialContainer.  Ensure that the partial
+       class semantics can be tied to type-correctness, i.e., any
+       violation will cause a compile error.
+       * class.cs, const.cs: Access all fields that belong to class
+       TypeContainer via ParentContainer.  Arguments of EmitContexts and
+       Resolve()-like functions still use 'Parent'.
+
+       * class.cs (SourceMethod): Use DeclSpace, not TypeContainer.
+       (*.CreateEmitContext): Change TypeContainer argument to DeclSpace.
+       (PropertyMethod.CheckModifiers): Remove unused argument.
+       * codegen.cs (EmitContext..ctor): Change TypeContainer argument to
+       DeclSpace.
+
+2006-03-28  Raja R Harinath  <rharinath@novell.com>
+
+       * decl.cs (DeclSpace.LookupGeneric): Update to changes.
+
+2006-03-17  Raja R Harinath  <harinath@gmail.com>
+
+       Make semantics of PartialContainer simpler.
+       * decl.cs (DeclSpace.IsPartial): Remove.
+       * class.cs (TypeContainer.IsPartial): Likewise.
+       (TypeContainer..ctor): Set PartialContainer to point to self.
+       (TypeContainer.GetClsCompliantAttributeValue): Don't use IsPartial.
+       (TypeContainer.FindNestedType): Likewise.
+       (MemberCore.ParentContainer): Simplify.  Remove deprecation.
+
+2006-03-17  Marek Safar  <marek.safar@seznam.cz>
+
+       * typemanager.cs.cs (GetInterfaces): Don't recreate 0-sized arrays.
+
+2006-03-15  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (FieldMember.Emit): ParentContainer is real parent for partial
+       classes.
+
+2006-03-15  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (Operator.Define): An error for base conversion was not
+       reported correctly.
+
+2006-03-13  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77593, #77574.
+
+       * class.cs (MethodCore.CheckBase): Another if for operator.
+
+2006-03-18  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77822.
+
+       * expression.cs (VerifyArgumentsCompat): Reverted to double error
+       reporting, it's more tricky than I thought.
+
+2006-03-09  Marek Safar  <marek.safar@seznam.cz>
+
+       * anonymous.cs (AnonymousMethod.Compatible): Don't crash when parameters
+       were not resolved
+
+       * delegate.cs (Delegate.GetInvokeMethod): Use emitcontext free MemberLookup.
+       (DelegateCreation.ImplicitStandardConversionExists): New method for just
+       conversion test.
+       
+       * ecore.cs (Expression.MemberLookup): Don't ask for emitcontext when it's
+       not needed.
+
+2006-03-04  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77353.
+
+       * class.cs (SetMethod.DefineParameters): Uses new parameters type ctor.
+       (Event.Define): ditto
+       (SetIndexerMethod.DefineParameters): Uses Parameters.MergeGenerated.
+
+       * delegate.cs (Delegate.Define): Uses Parameters.MergeGenerated.
+       Removed redundant code and set NewSlot for Invoke method too.
+
+       * parameter.cs (Parameters.ctor): Add custom, type ctor.
+       (Parameters.MergeGenerated): New method. Use this method when you merge
+       compiler generated argument with user arguments.
+
+2006-03-03  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (ResolveAsTypeTerminal): Removed.
+
+       * ecore.cs (Expression.ResolveAsTypeTerminal): Make virtual to allow
+       specialization for predefined types; 30% speed up.
+       Finally placed obsolete check to right place.
+       (Expression.ResolveType): Removed.
+
+       * enum.cs, expression.cs, parameter.cs, statement.cs, typemanager.cs:
+       Updated after ResolveType was removed.
+
+       * expression.cs (Cast.ctor): Check void cast.
+       (Binary.ResolveAsTypeTerminal): Is never type.
+       (Conditional.ResolveAsTypeTerminal): Is never type.
+
+       * rootcontext.cs (ResolveCore): Set base type to simplify some code later.
+
+2006-03-26  Marek Safar  <marek.safar@seznam.cz>
+
+       * rootcontext.cs (ResolveCore): Removed System.INullableValue.
+
+2006-03-23  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (Is.DoResolve, As.DoResolve): Perform a dynamic
+       type check if either of the types is an open generic type.
+
+2006-03-23  Martin Baulig  <martin@ximian.com>
+
+       * convert.cs
+       (Convert.ExplicitTypeParameterConversion): New method; implement
+       explicit type parameter conversions.
+
+2006-03-23  Martin Baulig  <martin@ximian.com>
+
+       * convert.cs (Convert.ImplicitTypeParameterConversion): Do not
+       blindly allow all conversions if we do not have any constraints.
+
+2006-02-27  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (Attribute.PosArguments, Attribute.NamedArguments): Use
+       these two separated members to simplify the code.
+       (Attribute.Resolve): Refactored to use new fields and methods.
+       (Attribute.ResolveConstructor): Extracted from ResolveArguments and
+       implemented obsolete attribute checking.
+       (Attribute.ResolveNamedArguments): Extracted from ResolveArguments and
+       implemented obsolete checking again. It look line never ending quest ;-)
+       (GlobalAttribute.ResolveConstructor): Need to override as the rest.
+
+       * cfold.cs (BinaryFold): TryReduce throws an exception to indicate error.
+
+       * constanct.cs (TryReduce): Throws OverflowException to indicate error.
+
+       *class.cs (Property.Define): Add RegisterProperty call.
+
+       * cs-parser.jay: Replaced ArrayList with fixed array for attribute
+       argument groups (only 2).
+
+       * ecore.cs (Expression.GetAttributableValue): New virtual method used for
+       encoding expression to arguments.
+       (Expression.ExprClassToResolveFlags): Just turned to property.
+
+       * expression.cs (ArrayCreation.ValidateInitializers): Slightly optimized.
+       (ArrayCreation.GetAttributableValue): Renamed from EncodeAsAttribute and
+       optimized as well as implemented support for zero-length attributes.
+
+       * typemanager.cs (TypeManager.RegisterProperty, TypeManager.GetProperty):
+       Add caching of PropertyInfo's.
+
+2006-02-25  Marek Safar  <marek.safar@seznam.cz>
+
+       * delegate.cs (DelegateCreation.ResolveMethodGroupExpr): Don't report
+       error multiple times.
+
+2006-02-25  Marek Safar  <marek.safar@seznam.cz>
+
+       New partial class implementation.
+       A fix for #77027, #77029, #77403
+
+       * attribute.cs (Attributable): Made attributes protected.
+
+       * class.cs (TypeContainer): Add PartialContainer and partial_parts as
+       the replacements of ClassPart and PartialContainer.
+       (TypeContainer.AddClassOrStruct): Call RecordDecl here.
+       (TypeContainer.AddInterface): Ditto.
+       (TypeContainer.AddPartial): The main method for partial classes. It checks
+       for errors and merges ModFlags and attributes. At the end class is added to
+       partial_parts list.
+       (TYpeContainer.DefineDefaultConstructor): Checks whether default ctor is
+       required here.
+       (TypeContainer.GetClsCompliantAttributeValue): Cope with partial class too.
+       (TypeContainer.GetNormalPartialBases): Resolves base classes and interfaces
+       from the rest of partial classes.
+       (TypeContainer.GetClassBases): Simplified.
+       (TypeContainer.DefineTypeBuilder): New method, mostly extracted from
+       DefineType.
+       (TypeContainer.DefineDefaultConstructor): Is used by derived classes.
+       (TypeContainer.HasExplicitLayout): Uses Flags now.
+       (PartialContainer): Removed.
+       (ClassOrStruct.AddToContainer): Moved enclosing member name check here.
+       (StaticClass): Was merged with Class.
+       (Class.GetClassBases): class and static class bases are verified here.
+       (Class.TypeAttr): Added static attributes when class is static.
+       (Struct.RegisterFieldForInitialization): Moved from TypeContainer.
+       (MemberBase): In some cases we need to call parent container for partial
+       class. It should be eliminated but it's not easy now.
+
+       * cs-parser.jay: Replaced all PartialContainer with AddPartial.
+
+       * decls.cs (MemberCore.DocComment): Introduced new property as is used by
+       partial classed to accumulate class comments.
+       (MemberCore.GetClsCompliantAttributeValue): Moved from TypeContainer.
+
+       * doc.cs (GenerateTypeDocComment): Partial classes clean up.
+
+       * driver.cs (MainDriver): Tree.GetDecl was removed.
+
+       * modifiers.cs (Modifiers): Add partial modifier.
+
+       * tree.cs (Tree.decl): Removed.
+       (RootTypes): Started to use this class more often for root types
+       specializations.
+
+2006-03-23  Raja R Harinath  <rharinath@novell.com>
+
+       * generic.cs (TypeParameter.UpdateConstraints): Update
+       'constraints' if null.
+
+2006-02-22  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77615
+
+       * attribute.cs (AttributeTester.GetCoClassAttribute): Don't crash when
+       external interface does not have an attribute.
+
+2006-02-22  Marek Safar  <marek.safar@seznam.cz>
+
+       Another prerequisites for new partial classs implementation.
+       
+       * attribute.cs (Attribute.Equal): Implemented.
+       (Attribute.Emit): Changed as attributes can be applied more than twice.
+       (Attributes.Emit): Check for duplicate attributes here.
+
+       * class.cs, decl.cs, delegate.cs, doc.cs, enum.cs: Don't pass DeclSpace
+       as a parameter, clean-up.
+
+2006-02-11  Marek Safar  <marek.safar@seznam.cz>
+
+       A fix for #77485
+
+       * class.cs (TypeContainer.DefineType): Cannot use ResolveType because it
+       contains obsolete attribute check which can in some cases look for base
+       type of current class which is not initialized yet.
+       (TypeContainer.BaseType): Replacement of ptype.
+
+       * decl.cs (MemberCore.CheckObsoleteType): Reuse existing code.
+
+2006-02-11  Marek Safar  <marek.safar@seznam.cz>
+
+       First of prerequisites for new partial classs implemention.
+       
+       * attribute.cs (Attributable): Extended by ResolveContext;
+       Attributes finally have correct context for resolving in all cases.
+       (AttachTo): Attribute owner is assigned here.
+
+       * codegen.cs (IResolveContext): Introduce new interface to hold
+       all information needed in resolving phase.
+       (EmitContext): Implements IResolveContext; more clean-up needed here.
+       
+       * decl.cs (MemberCore): Implemented IResolveContext.
+
+       * anonymous.cs, attribute.cs, class.cs, codegen.cs, const.cs,
+       decl.cs, ecore.cs, enum.cs, expression.cs, iterators.cs, namespace.cs,
+       parameter.cs, statement.cs, tree.cs, typemanager.cs:
+       Refactored to use new IResolveContext instead of EmitContext; cleanup
+
+2006-03-22  Raja R Harinath  <rharinath@novell.com>
+
+       Support ParameterDefaultValueAttribute in gmcs.  Also applied to
+       mcs to keep code differences small.
+       * attribute.cs (Attribute.GetParameterDefaultValue): New.
+       * typemanager.cs (parameter_default_value_attribute_type): New.
+       * parameter.cs (Parameter.ApplyAttributeBuilder): Use them.  Add
+       CS1908 check.
+
+2006-03-22  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (Nullable.NullableLiteral): Derive from `NullLiteral'.
+
+       * convert.cs
+       (Convert.TypeParameter_to_Null): Create a `Nullable.NullableLiteral'
+       instead of the normal `NullLiteral'.
+
+2006-03-21  Martin Baulig  <martin@ximian.com>
+
+       Fix #77583.
+       * generic.cs (TypeManager.InferType): If `pt' is a generic
+       parameter, don't check whether `pt == at'.
+
+2006-03-20  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #77852
+       * generic.cs (Constraints.Resolve): Change argument to IResolveContext.
+       (TypeParameter.Resolve): Update to change.
+       (ConstraintChecker.CheckConstraints): Resolve type-argument
+       constraints before use.
+
+2006-03-16  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (ConstraintChecker.HasDefaultConstructor): If we're a TypeBuilder
+       and don't have any instance constructors, also lookup in the base class.
+       (TypeManager.IsNullableValueType): New public method.
+
+       * typemanager.cs (TypeManager.MemberLookup_FindMembers): Clear the
+       `BindingFlags.DeclaredOnly' flag and set `used_cache'.
+       (TypeManager.TryGetBaseDefinition): Use DropGenericMethodArguments().
+
+       * expression.cs (Unary.DoResolve): Use TypeManager.IsNullableValueType()
+       instead of just TypeManager.IsNullableType() to determine whether
+       a lifted operator exists.
+       (UnaryMutator.DoResolve): Likewise.
+       (Conditional.DoResolve): Likewise.
+       (Binary.DoResolve): A lifted operator only exists if both operands
+       are valuetypes and at least one of them is a nullable type.
+
+2006-03-14  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * iterator.cs : yield break is allowed in try statement which has
+         catch clauses. Fixed bug #77767.
+
+2006-03-12  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs (TypeManager.ArrayContainsMethod): Use a new
+       private IsSignatureEqual() to compare types; see the comment in
+       that method; fixes #77674.
+
+2006-03-10  Raja R Harinath  <rharinath@novell.com>
+
+       * ecore.cs (Expression.ResolveAsTypeStep): Remove 1-argument wrapper.
+       (Expression.ResolveAsTypeTerminal): Likewise.
+       * class.cs, decl.cs, delegate.cs, ecore.cs: Update to changes.
+       * expression.cs, generic.cs, iterators.cs: Likewise.
+       * parameter.cs, statement.cs, typemanager.cs: Likewise.
+
+2006-03-09  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (ConstraintChecker.HasDefaultConstructor): Call
+       TypeManager.DropGenericTypeArguments() on the `atype'; fixes #77548.
+
+2006-03-09  Martin Baulig  <martin@ximian.com>
+
+       * ecore.cs (FieldExpr.AddressOf): Don't emit the instance if the
+       `prepared' flag is set.
+
+       * generic.cs (LiftedBinaryOperator): Don't allow `||' or `&&' anymore.
+       (LiftedBinaryOperator, LiftedUnaryMutator): Fix a few nullable
+       issues; see gtest-254.cs.
+
+2006-03-07  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (TypeManager.InferType): Allow infering
+       `IEnumerable<T>' with an array of T; see gtest-251.cs.
+
+2006-03-06  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (TypeManager.InferType): Fix gtest-250.cs.
+
+       * typemanager.cs
+       (TypeManager.IsSubclassOf): Also check the base class.
+
+       * expression.cs
+       (Invocation.IsAncestralType): Use TypeManager.IsSubclassOf();
+       fixes gtest-249.cs.
+
+2006-03-01  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #77679.
+       * expression.cs (ParameterReference.DoResolveBase): Change return
+       type to bool.
+       (ParameterReference.DoResolve, ParameterReference.DoResolveLValue):
+       Update.
+
+       Fix #77628.
+       * ecore.cs (PropertyExpr.InstanceResolve): Fix CS1540 check.
+
+       Fix #77642.
+       * typemanager.cs (GetFullNameSignature): Don't nullref on
+       protected accessors.
+
+2006-02-16  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (TypeManager.GetGenericFieldDefinition): New public method; use it
+       instead of the `FieldInfo.Mono_GetGenericFieldDefinition()' icall.
+
+2006-02-14  Martin Baulig  <martin@ximian.com>
+
+       * *.cs: Use `Type.IsGenericType' instead of `Type.IsGenericInstance'.
+
+2006-02-14  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (TypeManager.DropGenericMethodArguments): New public method; don't
+       use GetGenericMethodDefinition() on something which is not a
+       generic method.
+
+2006-02-14  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (ConstraintChecker.CheckConstraints): If a type parameter has the
+       `struct' constraint, the type must be a non-nullable valuetype.
+
+2006-02-10  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs
+       (TypeManager.IsOverride): Make this work for instantiated methods
+       in a generic class; fixes #77509.
+       (TypeManager.ExpandInterfaces): Use TypeManager.GetInterfaces()
+       rather than calling it directly; fixes #77488.  
+
+2006-02-08  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (ConstraintChecker.CheckConstraints): Move the error
+       reporting into CheckConstraint() so we can use the correctly
+       instantiated type.
+
+2006-02-08  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (BaseAccess): Add support for generic methods.
+
+       * ecore.cs (MethodGroupExpr.ResolveGeneric): Propagate `IsBase' to
+       the new MethodGroupExpr.
+
+2006-02-07  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (ConstraintChecker.CheckConstraints): Interfaces are
+       also reference types; fixes #77483.
+
+2006-02-07  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (TypeManager.IsGenericMethod): We now return whether something is
+       an instantiated generic method (and not a generic method def).
+       (TypeManager.IsGenericMethodDefinition): New public method.
+
+       * typemanager.cs
+       (TypeManager.CSharpSignature): Only include type arguments for
+       "real" generic methods, not for any instantiated method.
+       (TypeManager.GetMethodName): Likewise, but also allow generic
+       method definitions here.
+
+2006-02-06  Miguel de Icaza  <miguel@novell.com>
+
+       * codegen.cs (EmitScopeInitFromBlock): check here the
+       capture_context, there is no need to make two calls to the
+       EmitContext. 
+
+       * anonymous.cs: Add some debugging messages that might help me
+       track other instances of this problem in the future (the
+       regression of test 467).
+
+       * cs-parser.jay: track the variable block, as we need to initalize
+       any captured variables declared in this block for the "catch"
+       portion of the "Try" statement.
+
+       * statement.cs (Try.Emit): If the "Catch" has a VarBlock, emit any
+       scope initialization for captured variables. 
+
+       Also, move the emit for the variables after the block location has
+       been marked.
+
+2006-02-06  Marek Safar  <marek.safar@seznam.cz>
+
+       * ecore.cs (PropertyExpr.FindAccessors): Just made flags const.
+       
+2006-02-06  Martin Baulig  <martin@ximian.com>
+
+       * class.cs (TypeContainer.DefineType): If we're a struct, pass
+       `TypeManager.value_type' as parent type to
+       ModuleBuilder.DefineType().  Fixes #77358.      
+
+2006-02-02  Miguel de Icaza  <miguel@novell.com>
+
+       * anonymous.cs (CaptureContext.EmitInitScope): I was wrong in the
+       commit yesterday, the initialization for the roots is necessary.
+       What is not necessary is the scope activation.
+
+2006-02-02  Raja R Harinath  <rharinath@novell.com>
+
+       * ecore.cs (PropertyExpr.DoResolveLValue): Add CS0206 check.
+       * expression.cs (IndexerAccess.DoResolveLValue): Add CS1612 and
+       CS0206 checks.
+       (Argument.Resolve): Remove CS0206 checks.
+
+2006-02-01  Miguel de Icaza  <miguel@novell.com>
+
+       * anonymous.cs (CaptureContext.EmitInitScope): Do not emit the
+       scopes for all the roots, the scopes will now be emitted when the
+       Blocks are entered. [This change was wrong, fixed on 2006-02-02]
+
+       (CaptureContext.EmitScopeInitFromBlock): Simply emit the ScopeInfo
+       code.  This reduces a lot of existing cruft.
+       
+       * statement.cs (Block.Emit): Call EmitScopeInitFromBlock here, so
+       that the ScopeInfo is generated as we enter the scope, not at the
+       time of use, which is what we used to do before.
+
+       * codegen.cs (EmitScopeInitFromBlock): New routine, this is called
+       every time a Block is about to be emitted if we have a
+       CaptureContext. 
+
+2006-02-01  Raja R Harinath  <rharinath@novell.com>
+
+       * codegen.cs (AssemblyClass.Emit): Emit RuntimeCompatibility
+       attribute for mscorlib too.
+
+       * typemanager.cs (NoTypes, NoTypeExprs): Remove.
+       (Reset): Update.
+       * *.cs: Use Type.EmptyTypes instead of TypeManager.NoTypes.
+
+       * typemanager.cs (cons_param_array_attribute): Make private.
+       (Reset): Set it to null.
+       (InitCoreHelpers): Don't initialize it.
+       (ConsParamArrayAttribute): New.  Initialize it as needed.
+       * parameter.cs (ParamsParameter.ApplyAttribute): Update to change.
+
+2006-01-31  Miguel de Icaza  <miguel@novell.com>
+
+       * expression.cs: There might be errors reported during the
+       selection of applicable methods.  If there are errors, do not
+       continue execution as it will lead the compiler to crash.
+
+2006-01-30  Miguel de Icaza  <miguel@novell.com>
+
+       * expression.cs: Member access is not allowed on anonymous
+       methods.  Fixes #77402.
+
+2006-01-30  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #77401
+       * cs-parser.jay (VariableDeclaration): Don't set
+       current_array_type to null.
+       (field_declaration, event_declaration, declaration_statement):
+       Set it to null here.
+
+2006-01-29  Raja R Harinath  <harinath@gmail.com>
+
+       Fix part of #77397
+       * generic.cs (TypeManager.IsEqual): Handle pass-by-ref types.
+
+2006-01-28  Raja R Harinath  <harinath@gmail.com>
+
+       * typemanager.cs (GenericParameterPosition): New.
+       * doc.cs: Use it.
+
+2006-01-28  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc.cs : To process "include" elements, first we should create
+         another list than XmlNodeList, because it could result in node
+         removal, which could result in that the XmlNodeList gives up
+         yielding next node.
+
+2006-01-25  Miguel de Icaza  <miguel@novell.com>
+
+       * expression.cs: Introduce an error report that we were not
+       catching before.   Gonzalo ran into it.
+
+2006-01-23  Miguel de Icaza  <miguel@novell.com>
+
+       A fix for bug: #76957
+       
+       * iterators.cs (MoveNextMethod.CreateMethodHost): call
+       ComputeMethodHost before creating the method, this is a new
+       requirement. 
+
+       * anonymous.cs (AnonymousContainer): Now we track all the scopes
+       that this method references (RegisterScope).  The actual scope
+       where the method is hosted is computed with the ComputeMethodHost
+       before we create the method.
+
+       Moved the Deepest routine here.
+
+       (AnonymousContainer.ComputeMethodHost): New routine used to
+       compute the proper ScopeInfo that will host the anonymous method.
+
+       (ScopeInfo): Deal with multiple roots.  The problem was that we
+       did not have a unique root where all ScopeInfos could be hanged
+       from.   Remove `topmost' ScopeInfo, and instead keep an arraylist
+       of roots.  
+
+       Remove AdjustMethodScope which is now computed at the end.  Remove
+       LinkScope which did a partial link, instead link all ScopeInfos
+       before code generation from the new "LinkScopes" routine. 
+
+       Simplify all the Add* routines as they no longer need to maintain
+       the tree, they just need to record that they are using variables
+       from a ScopeInfo.
+
+       (IsAncestor, GetAncestorScopes, GetParentScope, LinkScope): New
+       routines to produce the forest of ScopeInfo trees.
+
+       * class.cs (TypeContainer.AppendMethod): This is just like
+       AddMethod, but ensures that an interface implementation method
+       (IEnumerable.XXX) is not inserted at the beginning of the queue of
+       methods, but at the end.
+
+       We use this functionality to ensure that the generated MoveNext
+       method in the iterator class is resolved/emitted before the
+       enumerator methods created.   
+
+       This is required because the MoveNext method computes the right
+       ScopeInfo for the method.  And the other methods will eventually
+       need to resolve and fetch information computed from the anonymous
+       method. 
+
+       
+2006-01-23  Raja R Harinath  <rharinath@novell.com>
+
+       Improve implementation of section 14.4.2.2 (Better function member).
+       * expression.cs (Invocation.MoreSpecific): Compare all type
+       arguments before deciding if one type is more specific than
+       another.  Handle array types too.  Return the more specific type.
+       (Invocation.BetterFunction): Add more tie-breaking rules from
+       section 14.4.2.2.  Perform "more specific" check after
+       other tie-breaking rules.  Compare all parameter types before
+       choosing the "more specific" method.
+
+2006-01-21  Raja R Harinath  <harinath@gmail.com>
+           Carlos Alberto Cortez  <calberto.cortez@gmail.com>
+
+       Fix rest of #76995.
+       * namespace.cs (NamespaceEntry.UsingExternalAliases): Don't add to
+       the 'aliases' hash.
+       (NamespaceEntry.LookupAlias): Lookup 'extern_aliases' hash too.
+       (NamespaceEntry.VerifyUsing): Resolve external aliases too.
+
+2006-01-18  Martin Baulig  <martin@ximian.com>
+
+       * class.cs (TypeContainer.AddToMemberContainer): Use
+       `symbol.MemberName.MethodName' instead of just `symbol.Name';
+       fixes #77124.
+
+2006-01-18  Martin Baulig  <martin@ximian.com>
+
+       Fix #76417: a generic class may now have methods which may unify
+       for some type parameter substitutions.
+
+       * class.cs (Method.IsDuplicateImplementation): Don't report CS0408
+       for methods which may unify anymore.
+
+       * expression.cs (Invocation.MoreSpecific): New private static
+       method; checks whether one method is more specific than another
+       according to 14.4.2.2 of the spec.
+       (Invocation.BetterFunction): Implement the tie-breaking rules from
+       14.4.2.2 of the spec: if two methods unify for some type parameter
+       substitution, we need to pick the more specific one.
+
+2006-01-18  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #76656, cs0231-2.cs.
+       * cs-parser.jay (formal_parameter_list): Make error case catch
+       more issues.
+       (parenthesized_expression_0): Add CS1026 check.
+       (invocation_expression): Remove unused { $$ = lexer.Location }.
+
+2006-01-17  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #76824.
+       * cs-parser.jay (statement_expression): Don't list out the
+       individual statement-expressions.  Convert syntax error into
+       CS0201 check.
+
+2006-01-16  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #76874.
+       * ecore.cs (MemberAccess.CheckIntermediateModification): Remove.
+       (UnboxCast.DoResolveLValue): New.  Move CS0445 check from
+       CheckIntermediateModification.
+       (FieldExpr.DoResolve): Add new two-argument version that
+       allows us to resolve the InstanceExpression as an lvalue.
+       The one-argument variant is now just a wrapper.
+       (FieldExpr.DoResolveLValue): Use two-argument DoResolve.
+       Resolve the lhs as an lvalue if the it has a value type.
+       (FieldExpr.AssignToReadonly): Move CS1648 and CS1650 checks
+       from Assign.DoResolve.
+       (PropertyExpr.InstanceResolve): Allow InstanceExpression to be
+       resolved as an lvalue.
+       (PropertyExpr.DoResolve): Update.
+       (PropertyExpr.DoResolveLValue): Resolve the lhs as an lvalue if it
+       has a value type.  Move CS1612 check here from
+       CheckIntermediateModification.
+       * assign.cs (Assign.DoResolve): Remove CS1648 and CS1650 checks.
+       * expression.cs (EmptyExpression.OutAccess): New.  Used as the
+       'right_side' of a ResolveLValue on an 'out' argument.
+       (EmptyExpression.LValueMemberAccess): New.  Used as the
+       'right_side' of a propagated ResolveLValue on a value type.
+       (LocalVariableReference.DoResolveBase): Recognize
+       EmptyExpression.OutAccess and EmptyExpression.LValueMemberAccess.
+       Add CS1654 check.
+       (Argument.Resolve): Use EmptyExpression.OutAccess rather than
+       EmptyExpression.Null.
+
+2006-01-16  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * typemanager.cs : added IsGenericParameter(). In gmcs it returns
+         Type.IsGenericParameter(). Fixed bug #77183.
+       * doc.cs : it is now identical to doc.cs in mcs.
+
+2006-01-16  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (ConstraintChecker.CheckConstraint): Fix #77167.
+
+2006-01-16  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs (TypeManager.CSharpSignature): Make this work for
+       ctors; fixes #77250.
+
+2006-01-12  Miguel de Icaza  <miguel@novell.com>
+
+       This fixes the problem where we used ldfld instead of ldflda to
+       load the "THIS" pointer on captured parameters, when THIS is a
+       value type.  See bug #77205.
+       
+       * iterators.cs (CapturedThisReference.Emit): Pass false to
+       EmitThis (we do not need the address).
+
+       * codegen.cs (EmitThis): it needs to know whether we need the
+       address of `this' or not.  This is used by value types.  
+
+       * expression.cs (This.AddressOf): Pass true to the EmitThis call,
+       every other call passes false.
+
+2006-01-12  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #77221.
+       * typemanager.cs (TryGetBaseDefinition): Rename from the mis-named
+       GetOverride.
+       * expression.cs (Invocation.OverloadResolve): Update.
+       (Invocation.DoResolve): Avoid double resolution of invocation.
+
+2006-01-11  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #77180.
+       * expression.cs (Unary.Emit): When in /checked+ mode, don't emit
+       unary negation of floating point types as 0-expr; negation cannot
+       overflow in floating point types.
+
+       Fix #77204.
+       * expression.cs (MemberAccess.DoResolve): Disallow the use of '.'
+       on operands of 'void' type.
+
+       Fix #77200.
+       * cfold.cs (BinaryFold): Implement folding of BinaryOr, BinaryAnd
+       and ExclusiveOr for boolean constants too.
+
+2006-01-12  Ben Maurer  <bmaurer@andrew.cmu.edu>
+
+       * expression.cs: Fix Console.WriteLine ((this = x).foo);
+
+2006-01-12  Miguel de Icaza  <miguel@novell.com>
+
+       * cs-tokenizer.cs (Position): New class used to save and restore
+       the position state in the tokenizer.  Before this patch the save
+       and restore was not complete enough so the line and columns would
+       start to drift and the debugger and stack traces will get the
+       wrong data.
+
+2006-01-10  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (TypeParameter.InflateConstraints): New public method.
+
+       * iterators.cs (Iterator.DefineNestedTypes): Also inflate the
+       constraints; fixes #77042.
+
+2006-01-10  Martin Baulig  <martin@ximian.com>
+
+       * anonymous.cs (ScopeInfo.EmitScopeType): Use the `CurrentType'
+       instead of the `TypeBuilder' for this "<>THIS" variable; fixes
+       #77061. 
+
+2006-01-09  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75636.
+       * expression.cs (Invocation.OverloadResolve): Replace reflected
+       override methods with their base virtual methods, rather than
+       skipping over them.
+       * typemanager.cs (TypeManager.GetOverride): New.
+
+2005-12-21  Miguel de Icaza  <miguel@novell.com>
+
+       * driver.cs: Report the case of no source files and no -out:
+       argument provided.
+
+2005-12-20  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #77035.
+       * expression.cs (ComposedCast.GetSignatureForError): Define.
+
+2006-01-05  Jb Evain  <jbevain@gmail.com>
+
+       * class.cs (Property.Define, Indexer.Define): do not tag the
+       properties as SpecialName | RTSpecialName.
+
+2006-01-04  Miguel de Icaza  <miguel@novell.com>
+
+       * class.cs (MethodCore.IsDuplicateImplementation): This method was
+       doing a low-level comparission of parameter types.  It was lacking
+       a check for __argslist. 
+
+2005-12-30  Miguel de Icaza  <miguel@novell.com>
+
+       * expression.cs (ParameterReference.DoResolveBase): Allow
+       reference parameters if they are local to this block. 
+
+       This allows the ref and out parameters of a delegate to be used in
+       an anonymous method, for example:
+
+       delegate void set (out int x);
+
+       set s = delegate (out int x){
+               x = 0;
+       };
+
+       This is used by functionality introduced late in the C# language.
+       
+       * anonymous.cs (AnonymousMethod.Compatible): Allow anonymous
+       method that take ref and out parameters. 
+
+       Fixes #77119 which was a late change in the spec.
+
+2005-12-23  Miguel de Icaza  <miguel@novell.com>
+
+       * anonymous.cs (ScopeInfo.LinkScope): Do not link the scope to its
+       parent if its the same scope.  Fixes #77060.
+
+2005-12-22  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (ComposedCast.DoResolveAsTypeStep): Fixed wrong merge.
+
+2005-12-21  Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+       * codegen.cs (AssemblyClass.CheckInternalsVisibleAttribute): Generate
+       errors 1726 for strong named assemblies with InternalsVisibleToAttribute 
+       that doesn't contain the full public key. This is a update of the
+       friend assemblies in .Net 2.0 release.
+       
+2005-12-18 Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+       Fix #76995
+
+       * namespace.cs (NamespaceEntry): Add extern_aliases as a
+       ListDictionary, to contain the ExternAliasEntry entries (in
+       addition to the NamespaceEntry.aliases hashtable). This field is
+       shared between the original entry and its doppelganger (bodyless 
+       copy of it).
+       (NamespaceEntry.UsingExternalAlias): Add the extern alias entry to
+       extern_aliases field.
+       (NamespaceEntry.Lookup): Move the IsImplicit check after the
+       lookup in extern_aliases.
+
+2005-12-16  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #77006.
+       * class.cs (TypeContainer.Mark_HasEquals): New.
+       (TypeContainer.Mark_HasGetHashCode): New.
+       (ClassPart): Override them.
+       (MethodCore.CheckBase): Use them instead of referring to Parent.Methods.
+
+       * generic.cs (GenericMethod.DefineMembers): Update to changes.
+       (TypeParameter.TypeParameter): Change type of 'parent' argument to
+       DeclSpace.
+
+       Fix #77008.
+       * enum.cs (EnumMember.EnumMember): Pass the parent_enum as the
+       'parent' argument to the base constructor.
+
+       Remove all mention of TypeContainer from decl.cs.
+       * decl.cs (MemberCore.Parent): Change into a DeclSpace.
+       (MemberCore.MemberCore): Change type of 'parent' argument to DeclSpace.
+       (DeclSpace.DeclSpace): Likewise.
+       (DeclSpace.DefineMembers): Remove unused argument.
+       * cs-parser.jay (pop_current_class): Update to changes.  Simplify
+       debugging check -- we don't care if the debug code throws an
+       InvalidCastException instead of an InternalErrorException.
+       * class.cs (TypeContainer.DefineMembers): Update to changes.
+       (TypeContainer.DoDefineMembers): Likewise.
+       (TypeContainer.GetMethods): Likewise.
+       (PropertyMember.Define): Likewise.
+       (MemberBase.Parent): New property that forwards to
+       MemberCore.Parent, but ensures that we get a TypeContainer.
+       * rootcontext.cs (RootContext.PopulateCoreType): Update to changes.
+       (RootContext.PopulateTypes): Likewise.  Remove special case code
+       for !RootContext.StdLib: DefineMembers is idempotent.
+
+2005-12-13  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (Method.ApplyAttributeBuilder): Test out modifier properly.
+
+2005-12-11  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc.cs : The search for referenced namespace was insufficient to
+         get global one as it used to do. Fixed bug #76965.
+
+2005-12-10  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc.cs : check name in cref in the last phase that whether it is
+         namespace or not.
+
+2005-12-09  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * cs-tokenizer.cs : reverted the latest change: it somehow broke
+         Mono.C5.
+
+2005-12-09  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc.cs : so it turned out that we cannot skip override check for 
+         interface members. Fixed bug #76954.
+
+2005-12-09  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * cs-tokenizer.cs : fixed bug #75984:
+         - #warning and #error should not be handled when the source line
+           is disabled.
+         - #line is not checked strictly when the source line is disabled.
+         - #define and #undef is on the other hand checked strictly at any
+           state.
+
+2005-12-08  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * cs-tokenizer.cs : missing Location (actually, filename) in one of
+         CS1027 report.
+
+2005-12-15  Raja R Harinath  <rharinath@novell.com>
+
+       * generic.cs (TypeManager.IsGeneric): Remove unused method.
+
+       * typemanager.cs (TypeManager.GetFullName): Rewrite to handle
+       nested types.
+
+2005-12-14  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs (TypeManager.GetFullName): Make this public;
+       `Type.Fullname' now never returns null.
+
+       * class.cs (Method.Define): Use TypeManager.GetFullName() for
+       explicit interface implementations; we're now using the same
+       naming convention than csc does.
+
+2005-12-14  Miguel de Icaza  <miguel@novell.com>
+
+       * convert.cs (ExplicitConversionCore): Check the return value from
+       ExplicitConversionCore which can return null on failure.  Fixes #76914
+
+2005-12-09  Raja R Harinath  <rharinath@novell.com>
+
+       * anonymous.cs (AnonymousMethod.Compatible): Use IsGenericType
+       instead of IsGenericInstance.
+       * generic.cs (TypeManager.IsEqual): Likewise.  Delete redundant
+       code that's now covered by the more general test.
+       * typemanager.cs (TypeManager.IsPrivateAccessible): Likewise.
+
+       * generic.cs (DropGenericTypeArguments): New.  Captures the common
+       pattern: if (t.IsGenericInstance) t = t.GetGenericTypeDefinition ();
+       * attribute.cs, class.cs, decl.cs, ecore.cs: Use it.
+       * generic.cs, report.cs, typemanager.cs: Likewise.
+
+2005-12-08  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (TypeArguments.Resolve): Added CS1547 check.
+
+       * typemanager.cs (TypeManager.CSharpSignature): Include type
+       arguments in the signature of a generic method.
+
+2005-12-07  Martin Baulig  <martin@ximian.com>
+
+       Add support for custom attributes on type parameters.
+
+       * cs-parser.jay (type_arguments): Added `opt_attributes'.
+
+       * generic.cs (TypeParameterName): New public class; we use this
+       instead of a `string' to store the name of a type parameter, so we
+       can also have `Attributes'.
+       (TypeArguments.GetDeclarations): Return a `TypeParameterName[]'
+       array instead of a `string[]' array.
+       (TypeParameter.ctor): We now also take an `Attributes' argument.
+       (TypeParameter.EmitAttributes): New public method; emit our
+       `OptAttributes' here.
+       (GenericMethod.EmitAttributes): New public method; emit the custom
+       attributes on all our type parameters.
+
+       * class.cs (TypeContainer.EmitType): Call EmitAttributes() on all
+       our type parameters.
+       (MethodData.Define): If we're a generic method, call
+       EmitAttributes() on it.
+
+2005-12-07  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (ConstraintChecker): New public abstract class; move the
+       constraint checking here from `ConstructedType' and also do
+       constraint checking for generic methods here.
+
+       * expression.cs (Invocation.OverloadResolve): Use
+       ConstraintChecker.CheckConstraints() if we resolved to a generic
+       method.  Fix #76806.
+
+2005-12-05  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (GlobalAttribute.ctor): Pass NamespaceEntry only.
+
+       * class.cs (EmitFieldInitializers): Simplified and fixed to work with
+       event initializers.
+       (FieldBase.EmitInitializer): Moved from TypeContainer and simplified.
+       (FieldBase.Initializer): Initializer is now optional.
+       (EventField.Define): Only event field can have initializer.
+
+       * codegen.cs (EmitContext): DeclSpace is not readonly (small hack).
+
+       * const.cs (Const): Reuse initializer.
+
+       * cs-parser.jay: Updated after FieldBase changes.
+       Added current_array_type to simplify array initializers.
+
+       * ecore.cs (NullCast.IsDefaultValue): Implemented.
+
+       * expression.cs, iterators.cs: Updated.
+
+       * namespace.cs (NamespaceEntry): Made UsingFound private.
+
+2005-12-05  Marek Safar  <marek.safar@seznam.cz>
+
+       * parameterCollection.cs: Obsolete, removed.
+       * parser.cs: Obsolete, removed.
+
+2005-12-05  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76849.
+       * class.cs (Constructor.Emit): Set obsolete checking for whole context.
+
+       * enum.cs (Enum.Define): Set obsolete context here.
+
+2005-12-05  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc.cs :
+         - FindDocumentedMember() now expects 1) paramList as null
+           when "we don't have to check the number of parameters" and
+           2) Type.EmptyTypes when "there is no arguments".
+         - Introduced FoundMember struct to hold the exact type which was
+           used to find the documented member (the above change broke
+           test-xml-044; it might be better just to use DeclaringType than
+           what MS does, like this change does, but it depends on usage.)
+
+2005-12-05  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc.cs : documented member might be from DeclaringType for nested
+         types. Fixed bug #76782.
+
+2005-12-03  Ben Maurer  <bmaurer@ximian.com>
+
+       * anonymous.cs: Have the param code handle leaving copies on the
+       stack etc. Allows anonymous params to take part in the assignment
+       code (++, +=, etc). Fixes bug #76550
+
+       * expression.cs: Handle the prepare_for_load/leave_copy by passing
+       it down to the anon code.
+
+       * iterators.cs: Use dummy var here
+
+       * codegen.cs: Handle new vars
+
+2005-12-01  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76849.
+       * class.cs (MethodData.Define): Set proper Obsolete context.
+
+       * ecore.cs (FieldExpr.ResolveMemberAccess): Don't check [Obsolete] in
+       obsolete context.
+       (FieldExpr.DoResolve): Ditto.
+
+2005-12-01  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76849.
+       * class.cs (MethodCore.DoDefineParameters): Test [Obsolete] only when
+       parent is not obsolete.
+
+2005-12-01  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc.cs : (FindDocumentedMember) find parameterless members first
+         and get CS0419 in the early stage. Fixed first case of bug #76727.
+
+2005-11-30  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76859.
+       * ecore.cs (Expression.ResolveAsConstant): Report constant error only when
+       no error was reported.
+
+       *expression.cs (Binary.DoResolve): left can be null.
+
+2005-12-06  Raja R Harinath  <rharinath@novell.com>
+
+       * class.cs (MethodCore.CheckGenericOverride): Delete unused
+       abstract method and all overrides.
+       * support.cs (ParameterData.GenericConstraints): Delete.
+       (ReflectionParameters.type_params): Delete.
+       (ReflectionParameters.ReflectionParameters): Make private.
+       (ReflectionParameters.GetConstaints): New factory method.
+       * generic.cs (TypeParameterDefineType): Use it.
+       (TypeManager.GetTypeParameterConstraints): Likewise.
+
+2005-11-22  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76783.
+       * class.cs (MethodData.Emit): Parameters should be labeled first.
+
+2005-11-21  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76761.
+       * parameter.cs (Parameter.ApplyAttributeBuilder): Fixed `ref' detection.
+
+2005-11-18  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (AreParametersCompliant): Moved to Parameter.
+
+       * class.cs (MethodCore): Parameter clean up.
+       (IMethodData): Added ParameterInfo.
+       (MethodData): Parameter clean up.
+       (Indexer.Define): Parameter clean up.
+
+       * anonymous.cs,
+       * codegen.cs,
+       * cs-parser.jay,
+       * decl.cs,
+       * doc.cs,
+       * ecore.cs,
+       * flowanalysis.cs,
+       * iterators.cs,
+       * pending.cs,
+       * statement.cs,
+       * typemanager.cs: Parameter clean up.
+
+       * delegate.cs (Define): Get rid of duplicated code.
+
+       * expression.cs (ParameterReference): Removed useless parameters
+       and simplified.
+       (Invocation): Ditto.
+
+       * parameter.cs (ParamsParameter): New class, params specialization.
+       (ArglistParameter): Attemp to separate arglist.
+       (Parameter): Refactored to be reusable and faster.
+       (Parameter.Modifier): Made understandable.
+       (Parameters): Changed to be used as a class for `this' assembly
+       parameters. Refactored to use new specialized classes.
+
+       * support.cs (ParameterData): Added Types property.
+       (InternalParameters): Deleted.
+
+2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc.cs : the previous patch does not actually fix the bug.
+         PropertyInfo override check is now implemented and really fixed it.
+       * expression.cs : Invocation.IsAncestralType() is used from doc.cs.
+
+2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc.cs : apply "override filter" also to properties.
+         Fixed bug #76730.
+
+2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc.cs : renamed FindMembers() to FindMethodBase(). For interfaces,
+         no need to check overrides. For classes, omit those results from 
+         interfaces since they must exist in the class. Fixed bug #76726.
+
+2005-11-15  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * typemanager.cs : (GetFullNameSignature) differentiate indexers
+         with different parameters. Fixed the second problem in #76685.
+
+2005-11-15  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc.cs : (FindDocumentedMember) pass invocation_type as well (to
+         get expected 'protected' access in CheckValidFamilyAccess()).
+         Fixed bug #76692.
+
+2005-11-15  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc.cs : (GenerateTypeDocComment) Fields could be FixedField.
+         Fixed bug #76705.  CS1569 was incorrectly commented out.
+
+2005-11-23  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (Constraints.Define): Removed.
+       (TypeParameter.DefineConstraints): Removed.
+       (TypeParameter.DefineType): Call SetGenericParameterAttributes()
+       on the GenericTypeParameterBuilder here.
+
+2005-11-23  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs (TypeManager.GetProperty): Make this public.
+
+       * generic.cs (Nullable.NullableInfo.ctor): Use
+       TypeManager.GetProperty() rather than using reflection directly.
+
+2005-11-17  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (Indexers.GetIndexersForType): Added support for
+       generic parameters; fixes #76587.
+
+2005-11-17  Martin Baulig  <martin@ximian.com>
+
+       * anonymous.cs
+       (CaptureContext.EmitMethodHostInstance): Use `Ldarg_0' if we
+       inherit the scope from our parent.  Fixes #76653.
+
+2005-11-15  Martin Baulig  <martin@ximian.com>
+
+       * anonymous.cs (ScopeInfo.ScopeType): New public field; use this
+       instead of `ScopeTypeBuilder' to refer to the "current" type.
+       (AnonymousMethod.CreateScopeType): Correctly create the helper
+       class if we're inside a generic type definition.
+
+2005-11-14  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc.cs : use Invocation.IsOverride() to do real override check.
+       * expression.cs : made Invocation.IsOverride() internal.
+
+2005-11-14  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc.cs : use TypeManager.FindMembers() instead of (possible)
+         TypeBuilder.FindMembers() and filter overriden base members out.
+         Fixed bug #76990.
+
+2005-11-13  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc.cs : ref/out parameters are represented as '@' (instead of
+         '&' in type FullName). Fixed bug #76630 (additionally crefs).
+
+2005-11-13  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc.cs : when there was no '.' in cref to methods in doc comment,
+         then parameters were missing in the output. Fixed bug #76691.
+
+2005-11-13  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * driver.cs : don't output docs when there is an error.
+         Fixed bug #76693.
+
+2005-11-13  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc.cs :
+         Now it should detect indexers. Fixed primary concern in bug #76685.
+         Fixed CS0419 message to not show the identical member signature in
+         the message.
+
+2005-11-13  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * doc.cs : (FindDocumentedMember) use TypeManager.MemberLookup()
+         instead of Type.FindMembers() since it does not handle events.
+         Fixed bug #71604.
+
+2005-11-12  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * codegen.cs: Fixed typo (speficied -> specified).
+
+2005-11-11  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76369.
+       * doc.cs (FindDocumentedTypeNonArray): Don't resolve again.
+
+2005-11-11  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs: Changed error message.
+
+       * cs-tokenizer.cs: One more check.
+
+2005-11-10  Marek Safar  <marek.safar@seznam.cz>
+
+       * statement.cs (Block.Resolve): Ignore empty statement.
+
+2005-11-10  Marek Safar  <marek.safar@seznam.cz>
+
+       * report.cs: Made error/warning methods more strict to avoid
+       their misuse.
+
+       * anonymous.cs, attribute.cs, class.cs, codegen.cs, constant.cs,
+       convert.cs, cs-parser.jay, cs-tokenizer.cs, decl.cs, delegate.cs,
+       doc.cs, driver.cs, ecore.cs, expression.cs, location.cs,
+       namespace.cs, parameter.cs, statement.cs, typemanager.cs: Updated.
+
+2005-11-11  Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+       * codegen.cs (AssemblyClass.CheckInternalsVisibleAttribute): 
+       Use the more explicit AssemblyName.FullName instead of 
+       AssemblyName.Name to report errors.
+       
+2005-11-11  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs, class.cs, cs-tokenizer.cs, parameter.cs: Sync
+       with mcs.
+
+2005-11-10  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs,
+       * convert.cs,
+       * cs-parser.jay,
+       * decl.cs,
+       * enum.cs,
+       * expression.cs,
+       * generic.cs,
+       * pending.cs,
+       * report.cs: Fixed error reporting and typos.
+
+       * generic.cs (TypeParameter.GetSignatureForError): New method.
+       (ConstructedType.GetSignatureForError): Instead of DeclarationName.
+
+       * typemanager.cs (GetFullName): Refactored.
+
+2005-11-08  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (Attribute.GetCoClassAttributeValue): New method.
+       (AttributeTester.GetCoClassAttribute): Get CoClassAttribute.
+
+       * class.cs (TypeContainer.IsComImport): New property.
+       (Constructor.Define): Create proper ctor for ComImport types.
+
+       * expression.cs (New.CheckComImport): Fixed.
+
+2005-11-07  Miguel de Icaza  <miguel@novell.com>
+
+       * anonymous.cs (CaptureContext.AddParameterToContext): The fact
+       that a parameter has been captured does not mean that we do not
+       have to do the rest of the processing.  This fixes the second part
+       of #76592.  If there was another anonymous method capturing
+       values in the past, the Scope would never be set for the second
+       method that captured the same parameter.
+
+       (CaptureContext.EmitAssignParameter): When `leave_copy' is passed,
+       properly manipulate the stack.   Second part of fix for #76592.
+
+       * expression.cs (New): Add support for invoking "new" on
+       interfaces that have been flagged with the ComImport attribute and
+       the CoClass.  Fixes #76637 
+
+       * statement.cs (Try.DoEmit): When a variable is captured, do not
+       try to emit the vi.LocalBuilder variable as it has been captured.
+       Create a temporary variable and store the results on the
+       FieldBuilder.  Fixes #76642
+
+2005-11-07  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (CheckPairedOperators): Made compilable with csc 2.0.
+
+       * ecore.cs (InstanceResolve): Fixed CS1540 detection.
+
+       * expression.cs (Binary.DoResolve): Added && optimalization.
+    
+       * typemanager.cs (AddUserType): Removed useless argument.
+
+2005-11-04  Marek Safar  <marek.safar@seznam.cz>
+
+       * statement.cs (Block.variables): Uses ListDictionary.
+
+2005-11-03  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #75969.
+       * class.cs (PartialContainer.EmitType): Customized to emit
+       security attributes.
+       (ClassPart.ApplyAttributeBuilder): Transform security attribute
+       for partial classes.
+
+2005-11-03  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76599.
+       * expression.cs (ElementAccess.DoResolveLValue): Fixed buffer
+       access has to be fixed.
+       
+       * typemanager.cs (IsUnmanagedType): Wrong common field type.
+
+2005-11-01  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76590.
+       * ecore.cs (NullCast.Reduce): Implemented.
+
+       * expression.cs (ArrayCreation.CheckIndices): Correcly check
+       constant type.
+       
+       * statement.cs (SwitchLabel.ResolveAndReduce): Catch null
+       properly.
+       (Foreach.Resolve): Catch null properly.
+
+2005-10-29  Marek Safar  <marek.safar@seznam.cz>
+       * cs-tokenizer.cs: Warning text fix.
+
+       * driver.cs: AllWarningNumbers exposed on public interface.
+
+       * report.cs (): Reviewed warning numbers.
+       (IsValidWarning): Use binary search.
+
+2005-10-29  Marek Safar  <marek.safar@seznam.cz>
+       * driver.cs: Implemeted resource visibility.
+       (Resources): New class for code sharing between /res: and
+       /linkres:
+2005-11-07  Marek Safar  <marek.safar@seznam.cz>
+
+       decl.cs (CurrentTypeParameters): Fixed to be public.
+
+2005-11-07  Marek Safar  <marek.safar@seznam.cz>
+
+       generic.cs, rootcontext.cs: Removed NewConstraintAttribute.
+
+2005-11-07  Marek Safar  <marek.safar@seznam.cz>
+
+       gmcs.exe.sources: Use CryptoConvert.cs from corlib.
+
+2005-11-05  Kornél Pál  <kornelpal@hotmail.com>
+
+       * gmcs.exe.config: Updated runtime version to v2.0.50727 (2.0 RTM).
+
+2005-11-04  Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+       Add friend assembly access support.
+       * typemanager.cs: assembly_internals_vis_attrs
+       cache for friend assembly access. 
+       (TypeManager.IsFriendAssembly): New method for
+       checking friend assembly access.
+       (TypeManager.Error_FriendAccessNameNotMatching): New
+       helper method.
+       (TypeManager.CompareKeyTokens): Likewise.
+       (TypeManager.Filter): Handle friend accessible
+       members.
+
+       * namespace.cs (RootNamespace.GetTypeInAssembly): Return
+       friend accessible types.
+
+       * ecore.cs (Expression.IsAccessorAccessible): Handle
+       friend accessible properties.
+
+       * decl.cs (DeclSpace.CheckAccessLevel): Handle friend
+       accessible types.
+       
+2005-10-28  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76568.
+       * cfold.cs (ConstantFold.BinaryFold): Implemented null cast
+       folding.
+       
+       * convert (Convert.ImplicitReferenceConversion): NullCast holds
+       contants only.
+       
+       * ecore.cs (NullCast): Child is contant only.
+       
+       * literal.cs (NullLiteral.Reduce): null can be converted to any
+       reference type.
+
+2005-10-28  Kornél Pál  <kornelpal@hotmail.com>
+
+       * driver.cs: Use Encoding.Default as default code page instead
+         of ISO-28591.
+
+2005-10-27  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #76085.
+       * expression.cs (Invocation.Error_InvalidArguments): Handle
+       __arglist parameters.
+       (Invocation.VerifyArgumentsCompat): Likewise.
+       * support.cs (ReflectionParameters.GetSignatureForError): Print
+       __arglist parameters.
+       (InternalParamters.GetSignatureForError): Likewise.
+       * parameter.cs (Parameters.GetSignatureForError): Likewise.
+
+2005-10-26  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (GetPropertyValue): Made public.
+
+       * codegen.cs (AssemblyClass): ResolveClsCompliance renamed to
+       Resolve.
+       Add new property WrapNonExceptionThrows to handle 2.0 assembly
+       attribute.
+       (AssemblyClass.Emit): Emit RuntimeCompatibilityAttribute when it
+       is not defined.
+       
+       * driver.cs: Reflect method name change.
+       
+       * statement.cs (Try.Resolve): Warn when try has both general
+       exception handlers.
+       
+       * typemanager.cs: runtime_compatibility_attr_type new predefined
+       type.
+
+2005-10-26  Raja R Harinath  <harinath@gmail.com>
+
+       Fix #76419.
+       * pending.cs (InterfaceMethod): Allow tm.args [i] to be null --
+       treat it as an empty parameter list.
+
+2005-10-26  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #76271.     
+       * ecore.cs (SimpleName.DoSimpleNameResolve): Make fall-back 
+       ResolveAsTypeStep silent.
+       * statement.cs (Block.AddConstant): Mark block as used.
+       (Block.ResolveMeta): Avoid piling on error messages
+       if a constant initializer resolution fails.
+
+2005-10-25  Raja R Harinath  <rharinath@novell.com>
+
+       * namespace.cs (RootNamespace.VerifyUsingForAll, Namespace.VerifyUsing):
+       Remove.
+       (NamespaceEntry.VerifyAllUsing): New.
+       (NamespaceEntry.AliasEntry.Resolve): New.  Handles common error
+       behaviour.  Delegates actual resolution of alias to ...
+       (NamespaceEntry.DoResolve): ... this.  Renamed from Resolve.
+       (NamespaceEntry.LocalAliasEntry, NamespaceEntry.ExternAliasEntry):
+       Update.
+       * driver.cs (Driver.MainDriver): Update.
+       
+       * namespace.cs (NamespaceEntry.DefineNamespace): Remove.
+       (NamespaceEntry.SymbolFileID): Make into a on-demand computed
+       property.
+       (Namespace.DefineNamespaces, RootNamespace.DefineNamespacesForAll):
+       Remove.
+       * symbolwriter.cs (SymbolWriter.Initialize): Don't call
+       RootNamespace.DefineNamespacesForAll.
+
+2005-10-24  Raja R Harinath  <harinath@gmail.com>
+
+       * typemanager.cs (assemblies, external_aliases, modules)
+       (AddAssembly, AddExternAlias, AddModule GetAssemblies, Modules)
+       (ComputeNamespaces, GetRootNamespace): Remove extra staging
+       overhead.  Move resposibility ...
+       * namespace.cs (GlobalRootNamespace): ... here.  Update to changes.
+       * driver.cs, attribute.cs, codegen.cs: Update to changes.
+
+2005-10-23  Raja R Harinath  <harinath@gmail.com>
+
+       * namespace.cs (RootNamespace.all_namespaces): Renamed from
+       cached_namespaces.  Improve usage.
+       (RootNamespace.Reset, RootNamespace.RegisterNamespace)
+       (RootNamespace.VerifyUsingForAll, RootNamespace.DefineNamespacesForAll):
+       Move from GlobalRootNamespace and simplify.
+       (RootNamespace.Global): Make instance variable.
+       (RootNamespace.RootNamespace): Add "alias name" parameter.
+       (GlobalRootNamespace): Simplify drastically.
+       (Namespace.Lookup): Don't use GetNamespace.
+       * typemanager.cs (GetRootNamespace): Rename from
+       ComputeNamespaceForAlias.
+       (NamespaceClash): Use Global.IsNamespace instead of GetNamespace.
+
+2005-10-23  Marek Safar  <marek.safar@seznam.cz>
+
+       * anonymous.cs (AnonymousContainer): Don't crash when container
+       doesn't exist.
+
+2005-10-23  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (Binary.DoResolve): Warn when comparing same
+       values.
+
+2005-10-23  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76486.
+       * expression.cs (Binary.DoResolve): It looks like there are no
+       convetsion rules in enum context.
+
+2005-10-19  Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+       Add support for extern alias qualifiers.
+       * typemanager.cs: Move some LookupTypeReflection code
+       to namespace.cs, to have cleaner code. Added some methods
+       to help us keep track of the extern aliased references.
+       * driver.cs: Add suport for extern alias assemblies on command
+       line and check for their warnings/errors. Also keep track of the
+       extern aliased assemblies.
+       * namespace.cs: Move the global functionality of Namespace
+       to GlobalRootNamespace/RootNamespace. Now the global namespace
+       is GlobalRootNamespace.Globa. Also the code moved from 
+       typemanager.cs lives in GlobalRootNames.cs/RootNamespace.cs. 
+       Finally added LocalAliasEntry (AliasEntry before) and
+       ExternAliasEntry, to handle alias statements.
+       * cs-parser.jay: Add support in the grammar for extern alias
+       statement.
+       * doc.cs, delegate.cs, expression.cs ecore.cs, symbolwriter.cs: 
+       Update callings to Namespace (now in GlobalRootNamespace).
+
+2005-10-25  Martin Baulig  <martin@ximian.com>
+
+       * convert.cs (ImplicitTypeParameterConversion): Make base
+       interfaces actually work; fixes #76557.
+
+2005-10-25  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (GenericMethod.Define): Call TypeParameter.DefineConstraints() on
+       all the type parameters; fixes #76551.
+
+2005-10-25  Martin Baulig  <martin@ximian.com>
+
+       Fix #76472.
+
+       * generic.cs
+       (GenericMethod.ctor): Added `Expression return_type' and
+       `Parameters parameters' arguments.
+       (GenericMethod.DefineType): Call ResolveAsTypeTerminal() on the
+       parameter and return types to check their constraints if they're
+       generic types.
+
+       * codegen.cs (EmitContext.ResolvingGenericMethod): New public
+       boolean field.
+
+       * ecore.cs (Expression.ResolveAsTypeTerminal): Don't check the
+       constraints of a generic type if `ec.ResolvingGenericMethod'.
+
+       * class.cs (MethodCore.DoDefineParameters): Set
+       `ec.ResolvingGenericMethod' if we're a generic method.
+       (MemberBase.MemberType): Likewise.
+
+2005-10-25  Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+       * typemanager.cs (TypeManager): Added 
+       TypeManager.internals_visible_attr_type to cache
+       S.R.CompilerServices.InternalsVisibleToAttribute.
+
+       * codegen.cs (AssemblyClass): Added checks for 
+       InternalsVisibleToAttribute in new method 
+       CheckInternalsVisibleAttribute () and also cache the
+       AssemblyName in AssemblyClass.Name.
+       
+2005-10-24  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs
+       (TypeManager.ExpandInterfaces): Added overloaded version which
+       just takes a `Type[]' array.
+
+       * generic.cs
+       (Constraints.Resolve): Don't expand the interfaces here; ie. we
+       just use the interfaces which were explicitly specified and not
+       the interfaces they inherit.  Fixes #76482.
+       (TypeParameter.FindMembers): Expand the interfaces here.
+
+2005-10-21  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (Constraints.Resolve): Also resolve the actual types here.
+       (Constraints.ResolveTypes): Just check the constraints here.
+       Fixes #76363; see gtest-218.cs.
+
+2005-10-21  Martin Baulig  <martin@ximian.com>
+
+       * convert.cs
+       (Convert.ImplicitTypeParameterConversion): Use a `ClassCast'
+       instead of a `BoxedCast'; fixes gtest-217.cs.
+
+2005-10-20  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * generic.cs : (ConstructedType.CheckConstraints) warn CS0310 when
+         1) "new()" is specified as generic parameter constraint and 2) the
+         type is TypeBuilder and 3) the type is abstract even if it has a
+         default .ctor(). Now errors/gcs0310-3.cs is correctly rejected.
+
+2005-10-20  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs
+       (GenericConstraints.TypeParameter): New public property.
+       (TypeParameter.ctor): Also take a `DeclSpace' argument.
+       (TypeParameter.DeclSpace): New public property.
+       (TypeParameter.DefineType): Inflate the constraints if our
+       `DeclSpace' is an `Iterator'.   
+
+2005-10-19  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * class.cs, decl.cs : (MemberCache.FindMemberToOverride) added 
+         GenericMethod argument to compare methods' generic type arguments.
+         Fixed bug #76382.
+
+2005-10-19  Martin Baulig  <martin@ximian.com>
+
+       * class.cs (TypeContainer.DefineType): Only use ResolveAsTypeStep(),
+       not ResolveType() when resolving the base type, so we're not
+       checking the constraints here.
+       (TypeContainer.ResolveType): Call ResolveType() on our base_type
+       if we have any.
+
+2005-10-19  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (ConstructedType.CheckConstraints): Committing
+       untested fix for #76441.
+
+2005-10-18  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #76371.
+       * class.cs (TypeContainer.DefineType): Move updating of
+       topological sort earlier in the code.
+       * decl.cs (DeclSpace.ResolveBaseTypeExpr): Don't use TypeBuilder.
+
+2005-10-18  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76273.
+       * cfold.cs (BinaryFold): Reduce constant in enum conversion.
+       
+       * constant.cs (Constant.TryReduce): Moved from Cast class.
+       (Reduce): Made little bit more OO and fixed missing conversions.
+       
+       * ecore.cs (Reduce): Implemented.
+       (Binary.EnumLiftUp): New method to upgrade values to enum values.
+       
+       * literal.cs (Reduce): Implemented.
+       
+       * class.cs: Reverted Miguel's wrong commit.
+
+2005-10-14  Miguel de Icaza  <miguel@novell.com>
+
+       * ecore.cs (GetMemberType): Report the correct mapping for the MemberCore
+
+2005-10-14  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * cs-parser.jay, expression.cs : CS0214 was missing error location
+         for constants. Fixed bug #76404.
+
+2005-10-10  Raja R Harinath  <rharinath@novell.com>
+
+       * ecore.cs (PropertyExpr.Emit): Use Invocation.EmitCall to emit
+       InstanceExpression.
+       (PropertyExpr.EmitCall): Likewise.
+       * expression.cs (Invocation.EmitArguments): Handle case where
+       arguments == null.
+       (Invocation.EmitCall): Avoid allocating temporary variable if
+       there are no arguments.
+
+2005-10-11  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76370.
+       * convert.cs (ExplicitConversionCore): Fixed object->enum
+       conversion.
+
+2005-10-07  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #76323.
+       * convert.cs (ImplicitConversionStandard): Move conversion of
+       void* to arbitrary pointer types ...
+       (ExplicitConversionStandard): .. here.
+       * ecore.cs (Expression.Error_ValueCannotBeConverted): Fix CS0266
+       error to always print typenames.
+
+2005-10-07  Raja R Harinath  <rharinath@novell.com>
+
+       * convert.cs (GetConversionOperator): Rename from
+       GetConversionOperators.  Move operator selection code from ...
+       (UserDefinedConversion): ... here.
+
+2005-10-06  Marek Safar  <marek.safar@seznam.cz>
+
+       * convert.cs (ExplicitConversionCore): Removed duplicate enum
+       conversion.
+
+2005-10-05  Marek Safar  <marek.safar@seznam.cz>
+
+       * assign.cs (Assign.DoResolve): Error method changed.
+
+       * cfold.cs (DoConstantNumericPromotions): Error method changed.
+       
+       * const.cs (ResolveValue): Reset in_transit immediately.
+       
+       * constant.cs: Error method changed.
+       
+       * convert.cs: Removed useless location parameter.
+       (ExplicitNumericConversion): Don't do double enum check.
+       (ExplicitConversionCore): Renamed from ExplicitConversion.
+       (ExplicitUnsafe): Extracted from ExplicitConversion.
+       (ExplicitConversion): Uses for error reporting.
+       
+       * ecore.cs (Error_ValueCannotBeConverted): More logic for more
+       error messages.
+       (ResolveBoolean): Uses common error method.
+       (CastToDecimal): Get rid of ec.
+       (CastFromDecimal): Optimized.
+       (ConvCast): Get rid of ec.
+       
+       * enum.cs (ResolveValue): Reset in_transit immediately.
+       (Emit): Return after first error.
+       
+       * expression.cs: Convert changes.
+       
+       * literal.cs: Error method changed.
+       
+       * statement.cs: Error method changed.
+
+2005-10-06  Raja R Harinath  <rharinath@novell.com>
+
+       Fix gtest-131.cs and gtest-211.cs.
+       * generic.cs (Nullable.LiftedBinaryOperator.EmitEquality):
+       Only emit code for a label if it is used.  Unreachable code can
+       violate ECMA evaluation stack invariants.
+
+2005-09-27  Marek Safar  <marek.safar@seznam.cz>
+
+       * anonymous.cs: Implemented ExprClassName.
+       
+       * assign.cs (Assign.DoResolve): Don't chrash when type is not
+       delegate.
+       
+       * attribute.cs (ResolveArguments): Enabled MethodImplOptions
+       check.
+       
+       * class.cs (StaticClass.DefineContainerMembers): Report protected
+       members as error.
+       
+       * codegen.cs: if(ed) PRODUCTION.
+       
+       * convert.cs (Error_CannotImplicitConversion): Better error
+       distinction.
+       
+       * cs-parser.jay: More error checks.
+       
+       * cs-tokenizer.cs (consume_identifier): Fixed Miguel's revert.
+       
+       * driver.cs (CSCParseOption): Enabled wrong option check.
+       
+       * ecore.cs (Expression.ExprClassName): Turned to property.
+       (MemberExpr.CheckIntermediateModification): For checking boxed
+       value types     modification.
+       
+       * statement.cs (Fixed.Resolve): Expression type must be
+       convertible to fixed type.
+       (CollectionForeach.GetEnumeratorFilter,TryType):
+       Small refactoring for easier error checking.
+
+2005-09-26  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (Attribute.Resolve): Check Obsolete attribute for
+       attributes.
+       
+       * class.cs (GeneratedBaseInitializer): New class for customization
+       compiler generated initializers.
+       (MemberBase.DoDefine): Check Obsolete attribute here.
+       (FieldMember.DoDefine): Ditto.
+       
+       * const.cs (ExternalConstant.CreateDecimal): Builder for decimal
+       constants.
+       
+       * decl.cs (MemberCore.EmitContext): Returns valid current ec.
+       (MemberCore.GetObsoleteAttribute): Removed argument.
+       (MemberCore.CheckObsoleteness): Obsolete attributes are hierarchic.
+       (MemberCore.CheckObsoleteType): New helper.
+       
+       * delegate.cs,
+       * enum.cs,
+       * statement.cs: Updates after MemberCore changes.
+       
+       * ecore.cs (TypeExpr.ResolveType): Check type obsoleteness here.
+       (FieldExpr.ResolveMemberAccess): Fixed decimal constants checks.
+       
+       * expression.cs (ComposedCast.DoResolveAsTypeStep): Don't check
+       obsolete attribute for compiler construct.
+       (As.DoResolve): Cache result.
+       
+       * iterators.cs (Define_Constructor): Use GeneratedBaseInitializer.
+
+2005-10-01  Miguel de Icaza  <miguel@novell.com>
+
+       * expression.cs (Probe): instead of having a "Type probe_type"
+       keep the extra information as a TypeExpr probe_type_expr since the
+       "As" operator needs to perform some type checks.
+
+       * (As.DoResolve): If the type is a type parameter, ensure that it
+       is constrained by a class.
+
+2005-09-22  Miguel de Icaza  <miguel@novell.com>
+
+       * statement.cs (Lock): Use the TemporaryVariable class instead of
+       manually using local variables as those do not work when variables
+       are captured.
+
+       * ecore.cs: Moved the TemporaryVariable class from being a nested
+       class inside Foreach to be a public class that can be employed in
+       other places. 
+
+2005-09-19  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-parser.jay: interface_accessors replaced by
+       accessor_declarations.
+
+       * ecore.cs, literal.cs, statement.cs: NullLiteral holds null
+       location.
+       
+       * statement.cs (GotoCase.Resolve): Convert null constant to
+       null case.
+       (SwitchLabel.ResolveAndReduce): Ditto.
+       (SwitchLabel.NullStringCase): Custom null stamp.
+       (Switch.SimpleSwitchEmit): Fix from NullLiteral to NullStringCase.
+       
+       typemanager.cs (CSharpSignature): Don't skip first argument
+       for full names.
+
+2005-09-16  Marek Safar  <marek.safar@seznam.cz>
+
+       * cfold.cs, constant.cs, convert.cs, ecore.cs,
+       expression.cs, iterators.cs, literal.cs: Store constants and
+       literals location.
+       
+       * class.cs (MemberBase.ShortName): Pass location.
+       
+       * cs-parser.jay: Some location fixes.
+       
+       * ecore.cs (Expression.Location): Made virtual.
+
+2005-09-27  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #72930.
+       * const.cs (Const.ResolveValue): Check for assigning non-null
+       value to reference type.
+
+2005-09-26  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #76133.
+       * expression.cs (This.VerifyFixed): In a value type T, the type of
+       'this' is T&, iow, 'this' is either an out or ref parameter.  In a
+       value type R, 'this' is treated as a value parameter.
+
+2005-09-05  Miguel de Icaza  <miguel@novell.com>
+
+       * expression.cs (Cast.TryReduce): Only reduce to an EnumConstant
+       if the underlying types are the same, otherwise we need to produce
+       code that will do the proper cast.
+
+       This was exposed by Marek's constant rewrite which produced
+       invalid code for the call site:
+
+       enum X : long { a }
+       void Method (X v) {}
+
+       Method ((X) 5)
+
+       This fixes test-49.cs
+
+2005-09-05  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * attribute.cs : (Attribute.IsValidArgumentType): array of string/
+         Type/Object should be allowed as well. Fixed bug #75968.
+
+2005-09-05  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * expression.cs : (Binary.DoResolve): when one is enum constant and
+         another is constant 0, then return enum one *as enum type*.
+         Fixed bug 74846.
+
+2005-10-04  Martin Baulig  <martin@ximian.com>
+
+       * ecore.cs (PropertyExpr.ResolveAccessors): Cosmetic fix; make the
+       `SetMemberIsUsed()' work for generics, too.
+
+2005-10-04  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (DelegateInvocation.EmitStatement): Make this work
+       for corlib.  Fixes #75691.
+
+2005-09-28  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76255.
+       * driver.cs: Fix compilation files with full root path.
+
+2005-09-25  Miguel de Icaza  <miguel@novell.com>
+
+       * report.cs (SymbolRelatedToPreviousError): Format the output so
+       it does not use an open parenthesis that is never closed. 
+
+       * driver.cs: Follow coding guidelines
+
+2005-09-18  Miguel de Icaza  <miguel@novell.com>
+
+       * driver.cs: Set InEmacs based on the environment variable EMACS. 
+
+       * location.cs (InEmacs): in this mode, do not report column
+       location as it confuses Emacs.
+
+2005-10-03  Raja R Harinath  <rharinath@novell.com>
+
+       * support.cs (SeekableStreamReader.Position): Don't error out when
+       the requested position is just beyond the end of the current
+       buffered data.
+
+2005-09-28  Raja R Harinath  <rharinath@novell.com>
+
+       * support.cs (SeekableStreamReader): Simplify drastically.  Don't
+       try to keep in sync with the byte count of the underlying Stream.
+       However, this limits us to a window size of 2048 characters: i.e.,
+       the maximum lookahead of our lexer/parser can be 2048 characters.
+
+2005-09-22  Martin Baulig  <martin@ximian.com>
+
+       * driver.cs: Removed a debugging FIXME.
+
+2005-09-21  Raja R Harinath  <rharinath@novell.com>
+
+       * cs-parser.jay (type_arguments): Add CS1644 check.
+       * decl.cs (DeclSpace.AddToContainer): Restore CS0694 check.
+
+2005-09-15  Raja R Harinath  <rharinath@novell.com>
+
+       * Makefile (PROGRAM): Make profile specific.
+       (gmcs.exe) [PROFILE=net_2_0]: Add utility rule to copy gmcs.exe to
+       the current directory.
+
+       Fix test-455.cs.
+       * expression.cs (Invocation.EmitCall): Remove optimization on
+       this_call since it doesn't handle 'this' being a value type.
+
+2005-09-05  Geoff Norton  <gnorton@customerdna.com>
+
+       * driver.cs: Ensure file handles are closed after parsing
+
+2005-09-05  Miguel de Icaza  <miguel@novell.com>
+
+       * expression.cs (Cast.TryReduce): Only reduce to an EnumConstant
+       if the underlying types are the same, otherwise we need to produce
+       code that will do the proper cast.
+
+       This was exposed by Marek's constant rewrite which produced
+       invalid code for the call site:
+
+       enum X : long { a }
+       void Method (X v) {}
+
+       Method ((X) 5)
+
+       This fixes test-49.cs
+
+2005-09-05  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (As.DoResolve): Use `probe_type.IsValueType'
+       instead of `TypeManager.IsValueType (probe_type)'; fixes #75668.
+
+       * cs-parser.jay (delegate_declaration): Small fix for #75852.
+
+2005-09-05  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * typemanager.cs: (IsUnmanagedType) : generic parameter is not allowed
+         to be a pointer type due to the spec 25.2, so check if declaring
+         type is generic type definition. Fixed bug #75772.
+
+2005-09-05  Atsushi Enomoto  <atsushi@ximian.com>
+
+       Fixed bug #75957.
+       * generic.cs : (TypeManager.IsEqual(Type,Type)): it should work when
+         both types are not defined by methods.
+       * expression.cs : (Invocation.IsApplicable): it should work when
+         the argument type is equal to the parameter type, not only when
+         ImplicitConversionExists() returns true.
+
+2005-09-02  Raja R Harinath  <rharinath@novell.com>
+
+       * attribute.cs (GetMarshal): Work even if "DefineCustom" is
+       internal.
+
+       Fix #75941.
+       * ecore.cs (SimpleNameResolve.DoSimpleNameResolve): Disable
+       flow-branching for LocalVariableReferences in case we were invoked
+       from a MemberAccess.
+       * expression.cs (LocalVariableReference.VerifyAssigned): New.
+       Carved out of ...
+       (LocalVariableReference.DoResolveBase): ... this.
+       (MemberAccess.Resolve): Do the check that was disabled during
+       SimpleNameResolve.
+
+2005-09-01  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * class.cs :
+         (PartialContainer.Create): check abstract/sealed/static strictly
+         but abstract/sealed can exist only at one side. Fixed bug #75883.
+
+2005-09-01  Kornél Pál  <kornelpal@hotmail.com>
+
+       Fix #75945.
+       * attribute.cs (Attribute.GetMarshal): If ArraySubType is not
+       specified, don't default to UnmanagedType.I4.
+
+2005-09-01  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * expression.cs : conditional operator should check possibly
+         incorrect assign expression. Fixed bug #75946.
+
+2005-08-30  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75934.
+       * anonymous.cs (ScopeInfo.MakeFieldName): New helper.
+       (ScopeInfo.EmitScopeType): Use it to construct field names from
+       names of captured locals.
+
+       Fix #75929.
+       * ecore.cs (BoxedCast.BoxedCast) [1-argument variant]: Remove.
+       * convert.cs (ImplicitReferenceConversion, TryImplicitIntConversion):
+       Pass 'target_type' to BoxedCast.  Don't default to 'object'.
+       (ExplicitConversion): Remove enum cases already handled by
+       implicit conversion.  Move implicit conversion check to the beginning.
+       * delegate.cs (DelegateCreation.ResolveMethodGroupExpr): Update.
+       * expression.cs (ArrayCreation.EmitDynamicInitializers):
+       Don't treat System.Enum as a struct.
+
+2005-08-30  Jb Evain  <jbevain@gmail.com>
+
+       * attribute.cs: handles as expression in parameters.
+
+2005-08-30  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75802.
+       * class.cs (TypeContainer.VerifyClsName): Don't use a
+       PartialContainer when verifying CLS compliance.
+       (AbstractPropertyEventMethod): Set Parent here, ...
+       (PropertyMethod): ... not here.
+
+2005-08-30  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * attribute.cs : escaped attribute name should not be allowed to be
+         resolved (e.g. @class as classAttribute). Fixed bug #75930.
+
+2005-08-29  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75927.
+       * convert.cs (ImplicitStandardConversionExists): Allow zero also
+       when converting a long constant to unsigned long.
+       * expression.cs (Invocation.OverloadResolve): Add sanity check to
+       detect where IsApplicable and VerifyArgumentsCompat disagree.
+
+2005-08-29  Raja R Harinath  <rharinath@novell.com>
+       and Carlos Alberto Cortez  <carlos@unixmexico.org>
+
+       Fix #75848.
+       * class.cs (TypeContainer.CanElideInitializer): New helper.
+       (TypeContainer.EmitFieldInitializers): Use it to determine if we
+       can safely emitting the initializer of a field.
+
+2005-08-25  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * statement.cs : (Continue.Resolve()) Unlike break, continue is not
+         allowed inside a switch (without loop). Fixed bug #75433.
+
+2005-08-26  Kornél Pál  <kornelpal@hotmail.com>
+
+       * AssemblyInfo.cs: Using Consts.MonoVersion instead of MonoVersion.cs.
+       * mcs.exe.sources: Using Consts.MonoVersion instead of MonoVersion.cs.
+
+2005-08-25  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * driver.cs : kinda reverting the default encoding changes (not exact 
+         revert since I noticed that "codepage:reset" might not work fine).
+
+2005-08-25  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * class.cs : (AbstractPropertyEventMethod) SetupName() now takes
+         Location. Now getter and setter store location correctly.
+         (errors/cs0111-12.cs now reports the expected location.)
+
+2005-08-25  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * driver.cs : Use default encoding on the environment.
+         Removed (now that) extra parameter for SeekableStreamReader.
+       * support.cs : (SeekableStreamReader) third .ctor() argument for
+         StreamReader is not required (always true). preamble size could
+         be acquired in simpler and safe way.
+
+2005-08-24  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * cs-parser.jay: report CS0642 at warning level 3
+         and report CS0642 for an if else statement also
+         fixes bug #74745. Patch by John Luke (and a bit
+         modified by me).
+         Removed extra CS0642 warning check for "while",
+         "for" and "fixed".
+       * statement.cs: In Block.Resolve(), CS0642 check
+         is reimplemented to check a sequence of an empty
+         statement and a block.
+
+         Both fix bug #66777.
+
+2005-08-24  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (GetMethodObsoleteAttribute): Disabled obsolete properties
+       detection until I fix it.
+       
+       * cs-tokenizer.cs: Changed error message.
+       
+       * cs-parser.jay: Fixed 2 error locations.
+       
+       * ecore.cs (Error_TypeDoesNotContainDefinition): Share error message.
+       (PropertyExpr.Error_PropertyNotFound): First attempt to detect non C#
+       properties.
+       
+       * enum.cs (GetSignatureForError): Fixed.
+       
+       * expression.cs (Invocation.IsSpecialMethodInvocation): Improved special
+       method detection.
+       
+       * class.cs,
+       * typemanager.cs (RegisterProperty): Removed.
+       
+       * statement.cs (CheckInvariantMeaningInBlock): Changed error message.
+
+2005-08-24  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75874.
+       * expression.cs (ArrayAccess.EmitLoadOpcode): Emit ldelem.i for pointers.
+       (ArrayAccess.GetStoreOpcode): Return stelem.i for pointers.
+
+2005-08-23  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * expression.cs : tiny fix is required for not warning positive ulong.
+         See test-441.cs.
+
+2005-08-23  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * expression.cs : add CS0652 check for constant and integral
+         expression. Fixed bug #53974.
+
+2005-08-23  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * expression.cs : in DoNumericPromotions(), check if there is implicit
+         conversion overload for string (to check CS0034). Fixed bug #52492.
+
+2005-08-23  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * cs-tokenizer.cs : Check newline in char constant. Fixed bug #75245.
+
+2005-08-23  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * ecore.cs : report location when it is *not* Null.
+
+2005-08-23  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * codegen.cs,
+         ecore.cs,
+         flowanalysis.cs,
+         expression.cs:
+         Added OmitStructFlowAnalysis to EmitContext to handle CS0165 check
+         correctly. Fixed bug #75721.
+
+2005-08-23  Raja R Harinath  <rharinath@novell.com>
+
+       * support.cs (SeekableStreamReader.Position): Avoid an expensive
+       loop that performs 'min (pos, char_count)'.
+
+       Fix #75862.
+       * expression.cs (Unary.ResolveOperator): Don't discard implicit
+       converted value in Operator.OnesComplement.
+
+2005-08-22  Ben Maurer  <bmaurer@ximian.com>
+
+       * anonymous.cs: If the anon method is pulled into a helper class,
+       it needs to be `internal' not `private'. Fixes runtime behavior on
+       msft. bug #75704
+
+2005-08-17  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #75803
+       * decl.cs (DeclSpace.VerifyClsCompliance): Skip when collision object
+       is a partial class.
+
+2005-08-16  Marek Safar  <marek.safar@seznam.cz>
+
+       The big constants rewrite
+       Fix #75746, #75685 and more
+       As a side effect saved 1MB for MWF ;-)
+       
+       * attribute.cs (GetAttributeArgumentExpression): Use ToType, GetTypedValue.
+       (GetMarshal, GetMethodImplOptions, GetLayoutKindValue): Values are not
+       enum based for corlib compilation.
+       
+       * cfold.cs (BinaryFold): Convert operand for enum additions. Fixed enum
+       subtractions.
+       
+       * class.cs (FixedField.Define): Use ResolveAsConstant.
+       
+       * const.cs (IConstant): Interface constants and enums.
+       (Const.ResolveValue): New method for constant resolvning.
+       (ExternalConstant): Constants from imported assemblies.
+       
+       * constant.cs (Constant.GetTypedValue): Used to get constant with forced
+       conversion; like enums.
+       (Constant.ToType): Converts this constant to different type.
+       (Constant.Increment): Adds 1.
+       
+       * convert.cs (ImplicitConversionRequired): Simplified.
+       
+       * cs-parser.jay: Create EnumMember directly.
+       
+       * decl.cs (MemberCore.CheckObsoleteness): Checks for ObsoleteAttribute presence.
+       
+       * doc.cs (GenerateEnumDocComment): Removed.
+       
+       * ecore.cs (Expression.ResolveAsConstant): New constant specific method.
+       (ConvertIntLiteral): Removed.
+       (FieldExpr.ResolveMemberAccess): Refactored to remove constant specific if(s).
+       
+       * enum.cs (EnumMember): Implement IConstant.
+       (Enum.IsValidEnumConstant): Removed.
+       (Enum.GetNextDefaultValue): Removed.
+       (Enum.FindMembers): Updated.
+       (Enum.GenerateDocComment): Iterate enum members.
+       
+       * expression.cs (Cast.TryReduce): Handle enums correctly.
+       (New.Constantify): Made public.
+       (MemberAccess.DoResolve): Removed contant specific if(s).
+       
+       * literal.cs (NullLiteral): Implement new abstract methods.
+       
+       * statement.cs (GotoCase.Resolve): Use new constant methods.
+       (SwitchLabel.ResolveAndReduce): Use new constant methods.
+       
+       * typemanager.cs (LookupEnum): Removed.
+       (IsEnumType): Fixed to work with corlib.
+       (RegisterConstant): Removed.
+       (LookupConstant): Removed.
+       (GetConstant): Changed to work with IConstant.
+
+2005-08-04  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * location.cs : Fixed overflown (>255) column number.
+
+2005-08-03  Raja R Harinath  <rharinath@novell.com>
+
+       First cut of the qualified-alias-member feature.
+       * cs-tokenizer.cs (Tokenizer.is_punct): Recognize the double-colon
+       token.
+       * cs-parser.jay (DOUBLE_COLON): New token.
+       (namespace_or_type_name): Add rule for recognizing
+       qualified-alias-members.
+       (primary_expression): Likewise.
+       (element_access): Allow QualifiedAliasMember as a possible
+       type-bearing expression.
+       (local_variable_type, local_variable_pointer_type): Likewise.
+       * namespace.cs (NamespaceEntry.LookupAlias): New.  Looks up
+       aliases in the current and enclosing namespace declarations.
+       (NamespaceEntry.UsingAlias): Add CS0440 warning.
+       * decl.cs (MemberName.is_double_colon): New.
+       (MemberName.MemberName): Add new constructor for alias-member.
+       (MemberName.GetTypeExpression): Generate QualifiedAliasMember too.
+       * expression.cs (QualifiedAliasMember): New expression type.
+
+2005-08-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * location.cs : it borked when no argument was specified.
+
+2005-08-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * location.cs : tiny ToString() format fix.
+
+2005-08-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * statement.cs : oops, it was missing.
+
+2005-08-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       A set of fixes for precise line/column location.
+
+       * location.cs :
+         "token" field now holds a file/line "delta", a line number offset 
+         from the segment, and a column number. See also:
+         http://lists.ximian.com/pipermail/mono-devel-list/2004-
+         December/009508.html
+         Removed static IsNull. Use instance IsNull property instead.
+       * cs-tokenizer.cs :
+         For some tokens it stores Location. For Identifier it stores
+         LocatedToken which is a pair of string name and location.
+         Column numbers are adjusted only at getChar().
+       * report.cs :
+         Use Location.ToString() for reporting (it now contains column).
+       * cs-parser.jay :
+         Largely modified to use LocatedToken instead of
+         string (IDENTIFIER), and to acquire Location from some tokens.
+       * namespace.cs, decl.cs, ecore.cs, class.cs, delegate.cs,
+         iterators.cs, const.cs, anonymous.cs, tree.cs, enum.cs,
+         codegen.cs :
+         Now MemberName holds Location. DeclSpace.ctor() receives Location
+         as a parameter. Removed extra parameters to all derived classes.
+         Replaced Location.IsNull() with instance property.
+       * assign.cs, expression.cs :
+         Added .ctor() overload that omits Location.
+       * attribute.cs :
+         Added "nameEscaped" flag that indicates the identifier was escaped
+         in the source file. This fixes bug #57047.
+
+2005-09-02  Martin Baulig  <martin@ximian.com>
+
+       * class.cs: Make CS3005 a warning, not an error.
+
+2005-08-02  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (AttributeTester.GetImportedIgnoreCaseClsType):
+       New method, looking for lo-case imported cls type.
+
+       * decl.cs (DeclSpace.VerifyClsCompliance): Check CS3005 for types
+       here.
+
+       * driver.cs: Removed VerifyTopLevelNameClsCompliance usage.
+
+       * enum (Enum.VerifyClsCompliance): Hardcode non-compliant types.
+
+       * typemanager.cs (TypeManager.AllClsTopLevelTypes): Renamed from
+       all_imported_types.
+       (TypeManager.LoadAllImportedTypes): Lo-case imported types.
+
+       Optimized to save 3.5 MB for SWF compilation.
+
+2005-08-01  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (AddToTypeContainer): Use inheritance insted of if(s).
+       (PartialContainer.Create): Moved logic AddToContainer.
+       (PartialContainer.MarkForDuplicationCheck): Shares name.
+       
+       * decl.cs (DeclSpace.AddToContainer): Check name collisions at one
+       place.
+       
+       * namespace.cs (Namespace.AddDeclSpace): Lazy declspaces
+       initialization.
+       (Namespace.GetSignatureForError): New method.
+       
+       * tree.cs (Tree.RecordDecl): Moved to AddToContainer.
+       (RootTypes.AddToTypeContainer): se inheritance insted of if(s).
+
+2005-08-01  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75669.
+       * ecore.cs (Expression.MemberLookupFailed): Use queried_type for
+       member lookup rather than qualifier_type, since qualifier_type can
+       be null.
+
+2005-08-01  Marek Safar  <marek.safar@seznam.cz>
+
+       * enum.cs (Enum.VerifyClsName): Fixed to allow not CLSCompliant
+       enum member.
+
+2005-07-31  Miguel de Icaza  <miguel@novell.com>
+
+       * statement.cs: Copy the local exception into the exception
+       captured local.  Fixes 75674
+
+2005-07-31  Raja R Harinath  <harinath@gmail.com>
+
+       Fix #75658.
+       * expression.cs (Invocation.OverloadResolve): Don't report error
+       CS1501 if error CS1502 has been reported.
+       (New.DoResolve): Delegate CS1501 reporting to
+       Invocation.OverloadResolve.
+
+       Fix #75656.
+       * statement.cs (Block.CheckInvariantMeaningInBlock): Verify
+       invariant-meaning-in-block property in an enclosing block if
+       necessary.
+
+2005-07-29  Marek Safar  <marek.safar@seznam.cz>
+
+       * statement.cs (SwitchLabel.ResolveAndReduce): Refactored.
+       (SwitchLabel.Erorr_AlreadyOccurs): Share error message.
+       (Switch.CheckSwitch): Just save 50kb for SWF.
+
+2005-07-27  Martin Baulig  <martin@ximian.com>
+
+       * anonymous.cs (CaptureContext.AddField): Added
+       `AnonymousContainer am' argument; compute its toplevel scope if
+       it's not already computed.  Fixes #75649.
+
+2005-07-26  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75628.
+       * class.cs (Constructor.Emit): Reset block to null if the block
+       resolve fails.
+
+2005-07-25  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (TypeContainer.VerifyMembers): Be compatible in warning 169.
+
+2005-07-25  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (MethodData.Define): Check whether accessor implementing
+       interface is public.
+
+       * driver.cs (Driver.parse): Try to be smart and check for `MZ' header.
+
+2005-07-22  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #57245
+       * namespace.cs (LookupType): Moved same type check to...
+       
+       * typemanager.cs (LookupTypeReflection): Don't allow to import more types
+       with the same name.
+
+2005-07-21  Raja R Harinath  <rharinath@novell.com>
+
+       * namespace.cs (NamespaceLookupType): Avoid a string allocation when we
+       already found a typebuilder.
+       * class.cs (MethodCore.IsDuplicateImplementation): Compare
+       MemberNames, not strings.
+
+       * const.cs (Error_ExpressionMustBeConst): 
+       Rename from Error_EpressionMustBeConst.
+       * const.cs, class.cs, statement.cd: Update.
+
+2005-07-21  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #65573
+
+       * const.cs (Const.LookupConstantValue): Report missing contant expression
+       everytime.
+       (Error_EpressionMustBeConstant): Only one error method.
+
+       * class.cs, statement.c: Updated.
+
+2005-07-20  Raja R Harinath  <rharinath@novell.com>
+
+       * statement.cs (Block.Flags): Add back HasVarargs.
+       (Block.flags): Make protected.
+       (ToplevelBlock.HasVarargs): Convert to a property that updates flags.
+
+       * typemanager.cs (types, typecontainers, user_types): Remove.
+       (UserTypes, TypeContainers): Likewise.
+       (HandleDuplicate, AddDelegateType, AddEnumType): Likewise.
+       (CleanUp, Reset): Update.
+       (AddUserType): Combine variants.  Now, only updates builder_to_declspace.
+       (GetNestedType): Use Type.GetNestedType.
+       (CoreLookupType): Take two arguments, the namespace and the
+       basename of the type.  Update to use the Namespace.Lookup
+       mechanism.
+       (InitEnumUnderlyingTypes, InitCoreTypes): Update.
+       (RealMemberLookup): Use IsNestedChildOf instead of playing with
+       string concatenation and substring matches.
+       * class.cs, enum.cs, delegate.cs: Update to changes.
+
+2005-07-20  Marek Safar  <marek.safar@seznam.cz>
+
+       * constant.cs (Constant.Error_ConstantValueCannotBeConverted): Moved from
+       Expression and made virtual.
+
+       * convert.cs (ImplicitReferenceConversionExists): Skip for value types.
+       (ImplicitStandardConversionExists): Fixed `byte' typo ?
+
+       * ecore.cs (Expression.Error_ConstantValueCannotBeConverted): Moved.
+
+       * literal.cs (NullLiteral.Error_ConstantValueCannotBeConverted): Customize
+       error message.
+
+       * convert.cs, ecore.cs, enum.cs: Reflect Error_ConstantValueCannotBeConverted
+       change.
+
+2005-07-18  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #57707
+       * codegen.cs (AssemblyClass.ApplyAttributeBuilder): Check whether
+       AssemblyCultureAttribute is not used on executable.
+
+       * rootcontext.cs,
+       * typemanager.cs: Add System.Reflection.AssemblyCultureAttribute.
+
+2005-07-16  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #60638.
+       * expression.cs (Binary.Warning_UnintendeReferenceComparison):
+       New.  Reports CS0252/CS0253.
+       Mostly taken from preliminary patch by Duncak Mak.
+       (Binary.DoResolveOperator): Store results of operator lookup.
+       Use them to detect if we need to warn about unintended reference
+       comparisons.
+
+2005-07-15  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #72969.
+       * namespace.cs (Namespace.Lookup): Add back location parameter.
+       (Namespace.LookupType): Add CS0436 report.  Add location parameter.
+       * delegate.cs, ecore.cs, expression.cs: Update to changes.
+
+       * codegen.cs (EmitContext.DeclSpace): Make readonly.
+       * namespace.cs (Namespace.Lookup): Carve out type lookup into ...
+       (Namespace.LookupType): ... this.
+       (NamespaceEntry.GetUsingTable): Allocate only one zero-sized array
+       of namespaces.
+       * typemanager.cs (LookupTypeReflection): Remove buggy code that
+       purported to handle pointers.
+       (char_ptr_type, void_ptr_type): Use GetPointerType rather than
+       CoreLookupType.
+
+2005-07-15  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (MemberAccess.ResolveNamespaceOrType): Don't report nested
+       type as namespace.
+
+2005-07-15  Raja R Harinath  <rharinath@novell.com>
+
+       * namespace.cs (Namespace.Lookup): Drop location parameter.
+       (NamespaceEntry.LookupAlias): Remove.  Merge into ...
+       (NamespaceEntry.Lookup): ... this.
+       (NamespaceEntry.Error_AmbiguousTypeReference):
+       Move here from DeclSpace.
+       (NamespaceEntry.LookupNamespaceOrType): Move support for dotted
+       names ...
+       * ecore.cs (TypeLookupExpression.DoResolveAsTypeStep): ... here.
+       * decl.cs (DeclSpace.ErrorAmbiguousTypeReference):
+       Move to NamespaceEntry.
+       * delegate.cs, expression.cs: Update to changes.
+
+2005-08-31  Martin Baulig  <martin@ximian.com>
+
+       Committing a patch from Atsushi Enomoto for #75850.
+
+       * statement.cs (Foreach.CollectionForeach.GetEnumeratorFilter):
+       Prefer a generic enumerator over a non-generic one.
+
+2005-08-26  Kornél Pál  <kornelpal@hotmail.com>
+
+       * AssemblyInfo.cs: Using Consts.MonoVersion instead of MonoVersion.cs.
+       * gmcs.exe.sources: Using Consts.MonoVersion instead of MonoVersion.cs.
+
+2005-08-25  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * driver.cs : reverting default encoding change as well as mcs.
+
+2005-08-25  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * driver.cs, support.cs : merged r48826.
+         Marek Safer wrote:
+         > could you integrate your mcs changes to gmcs otherwise
+         > gmcs cannot compile some files.
+
+2005-08-20  Martin Baulig  <martin@ximian.com>
+
+       * anonymous.cs (CaptureContext.CaptureThis): Create the topmost
+       scope if we don't already have it.
+
+       * expression.cs (Invocation.EmitCall): Use `ec.EmitThis ()' rather
+       than `ig.Emit (OpCodes.Ldarg_0)' to make it work inside iterators;
+       fixes #75867.
+
+2005-07-31  Miguel de Icaza  <miguel@novell.com>
+
+       * statement.cs: Copy the local exception into the exception
+       captured local.  Fixes 75674
+
+2005-07-15  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (MemberAccess.ResolveNamespaceOrType): Don't report nested
+       type as namespace.
+
+2005-08-12  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (MemberAccess.ResolveNamespaceOrType): Only search
+       for nested types here to avoid hitting the cache too early.
+
+2005-08-09  Miguel de Icaza  <miguel@novell.com>
+
+       * enum.cs: On the new compiler CLS error 3005 is now a warning not
+       an error. 
+
+2005-08-03  Martin Baulig  <martin@ximian.com>
+
+       Make iterators in generic methods work; see gtest-191.cs.
+
+       * generic.cs
+       (Constraints.Resolve): Protect against being called twice.
+
+       * class.cs
+       (TypeContainer.GetClassBases): Make this `protected virtual'.
+
+       * iterator.cs (Iterator.ctor): Added `GenericMethod' argument.
+       (Iterator.GetClassBases): Override this and compute the base
+       classes here.
+       (Iterator.DefineNestedTypes): If we're a generic method, all our
+       method type parameters become class type parameters on the proxy
+       class.
+
+       * statement.cs
+       (ToplevelBlock.Parameters): Make this a property, not a field.
+       (ToplevelBlock.ResolveMeta): Update the `parameters' from the `ip'.
+
+2005-08-03  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs (TypeManager.IsSubclassOf): Use
+       `TypeManager.IsEqual' instead of `Type.Equals'; fixes gtest-190.cs.
+       (TypeManager.GetFullName_recursed): Improved.
+
+2005-07-27  Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+       Fix #75417
+       * ecore.cs (Expression.IsAccessorAccessible): Change the check for
+       Private accessor case, using TypeManager.IsPrivateAccessible instead of
+       invocation_type == mi.DeclaringType, since the first one also checks
+       other condition used by generic instances.
+       
+2005-07-27  Martin Baulig  <martin@ximian.com>
+
+       * anonymous.cs (CaptureContext.AddField): Added
+       `AnonymousContainer am' argument; compute its toplevel scope if
+       it's not already computed.  Fixes #75649.
+
+2005-07-14  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (Attribute.ResolveAttributeType): Renamed from
+       CheckAttributeType and refactored.
+       (Attribute.ResolvePossibleAttributeType): Changed to reuse
+       ResolveAsTypeTerminal error handling.
+       (ResolveAsTypeTerminal): Introduced because of global attributes extra
+       handling.
+       (GetSignatureForError): Print errors in same way.
+
+       * class.cs,
+       * codegen.cs: Reflect attribute GetSignatureForError change.
+
+       * ecore.cs,
+       * expression.cs: Add silent parameter to ResolveAsTypeStep.
+
+       * namespace.cs (UsingEntry): Refactored to make fields private.
+
+       * assign.cs,
+       statement.cs: Error_UnexpectedKind has extra parameter.
+
+2005-07-14  Raja R Harinath  <rharinath@novell.com>
+
+       * ecore.cs (IAlias): Remove.
+       * decl.cs (DeclSpace): Don't derive from IAlias.  Remove members
+       that implement the interface.
+       * namespace.cs (Namespace): Likewise.
+       (Namespace.declspaces): Renamed from 'defined_names'.
+       (Namespace.AddDeclSpace): Renamed from 'DefineName'.  Take a
+       DeclSpace instead of an IAlias.
+       * tree.cs (Tree.AddDecl): Update.
+
+2005-07-12  Raja R Harinath  <rharinath@novell.com>
+
+       * statement.cs (Block.Flags); Remove HasVarargs.
+       (Block.HasVarargs): Move to ToplevelBlock.
+       (Block.ThisVariable, Block.AddThisVariable): Likewise.
+       (Block.Variables): Make protected.  Initialize variable hashtable
+       if necessary.
+       (Block.AddVariable): Update.
+       (Block.Resolve): Update to changes.
+       (ToplevelBlock.HasVarargs): New boolean.
+       (ToplevelBlock.ThisVariable): Move here from Block.
+       (ToplevelBlock.AddThisVariable): Likewise.
+       (ToplevelBlock.IsThisAssigned): New.  Forwards call to this_variable.
+       * expression.cs (This.ResolveBase): Update to changes.
+       (ArglistAccess.DoResolve): Likewise.
+
+2005-07-11  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #75321
+       * ecore.cs, class.cs: Use SetAssigned instead of direct access.
+
+       * class.cs (TypeContainer.VerifyMembers): Distinguish between
+       not used and not used & assigned.
+       (FieldBase.ASSIGNED): Moved to MemberCore.Flags.
+
+2005-07-11  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #75053
+       * expression.cs (Is.DoResolve): null is never provided type.
+
+2005-07-08  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #52496
+       * cs-parser.jay: Less strict event error rule to catch more errors.
+
+2005-07-11  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (ConstructedType.CheckConstraints): Improve the check
+       for the constructor constraint: we do not only have to check
+       whether the class has a public constructor, but also ensure that
+       it's parameterless.  Fixes #75492.
+
+2005-07-11  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (Binary.ResolveOperator): Only allow `==' and `!='
+       between type parameters if they either have the reference type
+       constraint or the class constraint.
+
+2005-07-10  Kamil Skalski <nazgul@nemerle.org>
+
+       * generic.cs: Use MakeGenericType instead of BindGenericParameters.
+
+2005-07-07  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #74975
+       * attribute.cs (orig_sec_assembly): Holds original version of assembly.
+       (ExtractSecurityPermissionSet): Cope with self referencing security
+       attributes properly.
+
+       * driver.cs (SetOutputFile): Made public property OutputFile.
+
+2005-07-07  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75486.
+       * class.cs (TypeContainer.first_nonstatic_field): Rename from
+       has_nonstatic_fields.  Make into a FieldBase pointer.
+       (TypeContainer.AddField): Add CS0282 check.
+       (TypeContainer.EmitType): Update.
+
+2005-07-06  Miguel de Icaza  <miguel@novell.com>
+
+       * cs-tokenizer.cs (consume_identifier): Do not create strings to
+       compare if they start with __.
+
+2005-07-06  Raja R Harinath  <rharinath@novell.com>
+
+       * statement.cs (Switch.SwitchGoverningType): Only look at
+       UserCasts that don't need implicit standard conversions to one of
+       the allowed switch types (Fixes test-322.cs).
+       (LocalInfo.Resolve): Re-enable sanity-test.
+
+2005-07-06  Marek Safar  <marek.safar@seznam.cz>
+
+       * cs-tokenizer.cs (consume_identifier): Detect double undescores
+       
+       * ecore.cs (FieldExpr.AddressOf): Changed volatile error to warning.
+       
+       * expression.cs (Invocation.DoResolve): Report error CS0245 here.
+
+2005-07-06  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75472.
+       * ecore.cs (SimpleName.GetSignatureForError): Add.
+       * expression.cs (MemberAccess.DoResolve): Don't clobber 'expr' field.
+       (MemberAccess.GetSignatureForError): Add.
+
+2005-07-05  Marek Safar  <marek.safar@seznam.cz>
+       The big error and warning messages review.
+       
+       * anonymous.cs,
+       * assign.cs,
+       * attribute.cs,
+       * class.cs,
+       * codegen.cs,
+       * convert.cs,
+       * cs-parser.jay,
+       * cs-tokenizer.cs,
+       * decl.cs,
+       * delegate.cs,
+       * doc.cs,
+       * driver.cs,
+       * ecore.cs,
+       * enum.cs,
+       * expression.cs,
+       * flowanalysis.cs,
+       * iterators.cs,
+       * literal.cs,
+       * location.cs,
+       * modifiers.cs,
+       * namespace.cs,
+       * parameter.cs,
+       * pending.cs,
+       * report.cs,
+       * rootcontext.cs,
+       * statement.cs,
+       * support.cs,
+       * tree.cs,
+       * typemanager.cs: Updated.
+       
+       * class.cs: (MethodCore.SetYields): Moved here to share.
+       (PropertyMethod.Define): Moved iterator setup here.
+       
+       * iterators.cs: Add orig_method to have full access to parent
+       container.
+
+2005-07-05  Raja R Harinath  <rharinath@novell.com>
+
+       Make 'fixed variable' handling standards compliant. Fix #70807, #72729.
+       * ecore.cs (IVariable.VerifyFixed): Remove 'is_expression' parameter.
+       (FieldExpr.VerifyFixed): Ensure that the field is part of a fixed
+       variable of struct type.
+       * expression.cs (Unary.ResolveOperator): Update to change.
+       (Indirection.VerifyFixed): Likewise.
+       (LocalVariableReference.VerifyFixed): A local variable is always fixed.
+       (ParameterReference.VerifyFixed): Value parameters are fixed.
+       (This.VerifyFixed): Treat 'this' as a value parameter.
+       * statement.cs (LocalInfo.IsFixed): Remove.
+
+2005-07-01  Martin Baulig  <martin@ximian.com>
+
+       * iterators.cs (Iterator.CapturedThisReference.Emit): Use
+       `ec.EmitThis ()' to get the correct scope.
+
+2005-07-01  Martin Baulig  <martin@ximian.com>
+
+       * ecore.cs (FieldExpr.DoResolve): Don't capture the field if it's
+       instance is a ParameterReference; fixes #75299.
+
+2005-06-30  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75412.
+       * expression.cs (Indexers.map): Remove.
+       (Indexers.Append): Filter out inaccessible setters and getters.
+       (IndexerAccess.DoResolve, IndexerAccess.DoResolveLValue): Update.
+
+       Fix #75283.
+       * ecore.cs (MemberExpr.EmitInstance): New.  Add CS0120 check.
+       Refactored from ...
+       (FieldExpr.EmitInstance, PropertyExpr.EmitInstance): ... these.
+       (FieldExpr.Emit, PropertyExpr.Emit): Update.
+       (FieldExpr.EmitAssign, PropertyExpr.EmitAssign): Update.
+       * expression.cs (Invocation.EmitCall): Add CS0120 check.
+
+2005-06-30  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #75322
+       * class.cs (FieldBase.GetInitializerExpression): One more field
+       for backup.
+
+2005-06-28  Miguel de Icaza  <miguel@novell.com>
+
+       * pending.cs: Do not define a proxy if the base method is virtual,
+       it will be picked up by the runtime (bug 75270).
+
+2005-07-08  Martin Baulig  <martin@ximian.com>
+
+       * anonymous.cs (CaptureContext.EmitParameterInstance): Correctly
+       handle parameters in nested scopes; fixes #74808; see gtest-188.cs.
+
+2005-07-07  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (ConstructedType.CheckConstraint): Use
+       ResolveAsTypeStep(), not ResolveAsTypeTerminal() so we're not
+       called recursively; fixes #75329.
+
+2005-07-06  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (TypeManager.InferTypeArguments): Added support for
+       anonymous methods; fixes #75461.
+
+2005-07-01  Martin Baulig  <martin@ximian.com>
+
+       * iterators.cs (Iterator.CapturedThisReference.Emit): Use
+       `ec.EmitThis ()' to get the correct scope.
+
+2005-07-01  Martin Baulig  <martin@ximian.com>
+
+       * ecore.cs (FieldExpr.DoResolve): Only capture the field if it's
+       instance is `This'; fixes #75299.
+
+2005-06-30  Martin Baulig  <martin@ximian.com>
+
+       * class.cs (Indexer): Implement IIteratorContainer; added support
+       for iterators in indexers.
+
+       * codegen.cs
+       (EmitContext.CurrentIterator): Make this a property, not a field.
+
+       * anonymous.cs (AnonymousContainer.Iterator): New public property.
+
+2005-06-28  Miguel de Icaza  <miguel@novell.com>
+
+       * pending.cs: Do not define a proxy if the base method is virtual,
+       it will be picked up by the runtime (bug 75270).
+
+2005-06-28  Martin Baulig  <martin@ximian.com>
+
+       * cs-parser.jay (interface_method_declaration): Avoid a
+       reduce/reduce conflict by moving some of the code into a separate
+       `interface_method_declaration_body' rule; fixes #75368.
+
+2005-06-28  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs (TypeManager.MemberLookup_FindMembers): Move the
+       array check after the check for TypeBuilder's.
+
+2005-06-21  Raja R Harinath  <rharinath@novell.com>
+
+       * convert.cs (FindMostEncompassedType): Add two trivial special
+       cases (number_of_types == 0 || number_of_types == 1).
+       (FindMostEncompasingType): Likewise.
+
+2005-06-17  Raja R Harinath  <rharinath@novell.com>
+
+       Some cleanups preparing for the fix of #75283.
+       * ecore.cs (PropertyExpr.InstanceResolve): Tighten conditions for
+       error testing.
+       (EventExpr.InstanceResolve): Likewise.
+       (EventExpr.DoResolve): Remove redundant checks.
+
+2005-06-08  Miguel de Icaza  <miguel@novell.com>
+
+       * class.cs: Small fix.
+
+2005-06-08  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75160.
+       * class.cs (GetPartialBases): Fix return value check of
+       part.GetClassBases.
+
+2005-06-07  Raja R Harinath  <rharinath@novell.com>
+
+       Ensure that partial classes are registered in their enclosing
+       namespace.  Initial part of fix of #75160.
+       * tree.cs (Tree.RecordDecl): Add new namespace argument.
+       Register declspace with namespace here, not in
+       DeclSpace.RecordDecl.
+       * cs-parser.jay: Pass namespace to RecordDecl.
+       * class.cs (PartialContainer.Create): Likewise.
+       (ClassPart.DefineType): New sanity-check.  Throws an exception if
+       called.
+       * decl.cs (Declspace.RecordDecl): Remove.
+       * namespace.cs (NamespaceEntry.DefineName): Remove.
+
+2005-06-06  Marek Safar  <marek.safar@seznam.cz>
+
+       * rootcontext.cs: Reset TargetExt as well.
+
+2005-06-03  Raja R Harinath  <rharinath@novell.com>
+
+       * ecore.cs (Expression.Resolve): Emit CS0654 error when
+       -langversion:ISO-1.
+
+2005-06-02  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75080, cs0119.cs.
+       * ecore.cs (Expression.ExprClassToResolveFlags): New.  Broken out
+       of ...
+       (Expression.Resolve): ... this.  Use it.  Remove bogus code
+       allowing ExprClass.Type and ExprClass.Namespace for
+       ResolveFlags.VariableOrValue.
+       (Expression.Resolve) [1-argument variant]: Change default resolve
+       flags based on language version.
+       (Expression.Error_UnexpectedKind): Use a simple string array
+       rather than an ArrayList.
+       * expression.cs (TypeOf.DoResolve): Set eclass to ExprClass.Value,
+       not ExprClass.Type.
+       (TypeOfVoid.DoResolve): Likewise.
+       (MemberAccess.DoResolve) [3-argument variant]: Make private.  Drop
+       flags argument -- it always has the same value.
+
+2005-05-31  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75081.
+       * ecore.cs (Expression.ResolveLValue): Add a Location parameter.
+       Use it in the error message.
+       * assign.cs, expression.cs, statement.cs: Update.
+
+2005-05-30  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75088.
+       * ecore.cs (Expression.MemberLookupFailed): Add CS0122 check in
+       the "almostMatchedMember" case too.
+       * typemanager.cs (Closure.CheckValidFamilyAccess): Add anything
+       that failed the accessibility checks to 'almost_match'.
+
+2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
+
+       * attribute.cs: Use internal MethodBuilder methods to set
+       ExactSpelling and SetLastError on PInvoke methods, instead
+       of passing them via charset.  Fixes #75060.
+
+2005-05-27  Raja R Harinath  <rharinath@novell.com>
+
+       * parameter.cs (Parameter): Remove TODO comment.
+       (Parameter.DefineParameter): Remove Location parameter.
+       (Parameters.LabelParameters): Likewise.
+       * class.cs (Constructor.Emit): Update to change.
+       (MethodData.Emit): Likewise.
+       * anonymous.cs (AnonymousMethod.EmitMethod): Likewise.  
+       * delegate.cs (Delegate.Define, Delegate.Emit): Likewise.
+
+2005-05-27  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * parameter.cs,
+         Removed Parameters.Location and added Parameter.Location instead.
+         Removed Location parameter from Emit() and GetSignature().
+       * anonymous.cs,
+         class.cs,
+         cs-parser.jay,
+         delegate.cs,
+         iterators.cs,
+         statement.cs :
+         Modified all related calls.
+
+2005-06-21  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (NullCoalescingOperator.Emit): Make this work if the
+       left-hand side is not a nullable type; fixes #75328.
+
+2005-06-21  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs
+       (TypeManager.CSharpName): Use GetFullName() instead of `t.FullName'.
+       (TypeManager.GetFullNameSignature): Likewise.
+
+       * convert.cs (Convert.Error_CannotImplicitConversion): Compare
+       `source.FullName' and `target.FullName' to check whether there are
+       two conflicting definitions.
+
+2005-06-21  Martin Baulig  <martin@ximian.com>
+
+       * convert.cs (Convert.ImplicitTypeParameterConversion): Always use
+       a BoxedCast - also for reference types - to be compatible with csc.
+
+2005-06-21  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (MemberAccess.DoResolve): Add support for nested
+       types in a generic instance; fixes #75320.
+
+2005-06-20  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (TypeManager.InferType): Also walk the class
+       hierarchy for generic instances; fixes #75261.
+
+2005-06-17  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs (TypeManager.IsBuiltinType): Use TypeToCoreType()
+       to make things work for corlib.
+
+2005-06-15  Martin Baulig  <martin@ximian.com>
+
+       * attribute.cs (Attribute.CheckSecurityActionValidity): Remove the
+       obsolete `SecurityAction' values.
+
+2005-06-06  Marek Safar  <marek.safar@seznam.cz>
+
+       * rootcontext.cs: Reset TargetExt as well.
+       
+2005-06-09  Martin Baulig  <martin@ximian.com>
+
+       * delegate.cs (Delegate.VerifyMethod): Added
+       `MethodGroupExpr old_mg' argument; inherit its
+       `HasTypeParameters'; fix #75085.
+
+2005-06-09  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (Invocation.OverloadResolve): Correctly handle
+       generic methods for the SetMemberIsUsed(); fix #75064.
+
+2005-06-09  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs (Throw.Resolve): Use TypeManager.IsSubclassOf();
+       fixes #75062.
+
+2005-06-08  Martin Baulig  <martin@ximian.com>
+
+       * cs-parser.jay (nullable_type_or_conditional): If we put the
+       nullable back and our `type' is a `ComposedCast', remove the
+       nullable from it.  Fixes #75156.
+
+       * expression.cs (ComposedCast.RemoveNullable): New public method.
+
+2005-06-08  Martin Baulig  <martin@ximian.com>
+
+       The big Iterators rewrite :-)
+
+       * iterators.cs: Rewrite this to use the anonymous methods framework.
+
+       * rootcontext.cs (RootContext.DefineTypes): Define Delegates
+       before the TypeContainers; see 2test-21.cs.
+
+       * class.cs
+       (TypeContainer.DefineType): Don't create a new EmitContext if we
+       already have one (this only happens if we're an Iterator).
+       (TypeContainer.Define): Also call Define() on all our iterators.
+       (Method.CreateEmitContext): Added support for iterators.
+
+       * anonymous.cs
+       (AnonymousContainer): New abstract base class for `AnonymousMethod'.
+       (AnonymousContainer.CreateMethodHost): Moved here from
+       AnonymousMethod and made abstract.
+       (AnonymousContainer.CreateScopeType): New abstract method.
+       (AnonymousContainer.IsIterator): New public property.
+       (ScopeInfo.EmitScopeType): Call CreateScopeType() on our Host to
+       get the ScopeTypeBuilder rather than manually defining it here. 
+       (ScopeInfo.EmitScopeInstance): New public method; correctly handle
+       iterators here.
+
+       * driver.cs (Driver.MainDriver): Call TypeManager.InitCodeHelpers()
+       before RootContext.DefineTypes().
+
+       * codegen.cs (EmitContext.RemapToProxy): Removed.
+       (EmitContext.CurrentAnonymousMethod): Changed type from
+       AnonymousMethod -> AnonymousContainer.
+       (EmitContext.ResolveTopBlock): Protect from being called twice.
+       (EmitContext.MapVariable, RemapParameter(LValue)): Removed.
+       (EmitContext.EmitThis): Removed the iterators hacks; use the
+       anonymous methods framework for that.
+
+       * statement.cs
+       (ToplevelBlock.Container): Make this a property, not a field.
+       (ToplevelBlock.ReParent): New public method; move the
+       ToplevelBlock into a new container.
+       (Foreach.TemporaryVariable): Simplify.
+
+2005-06-05  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs (LocalInfo.CompilerGenerated): New flag.
+       (Block.AddTemporaryVariable): New public method; creates a new
+       `LocalInfo' for a temporary variable.
+       (Block.EmitMeta): Create the LocalBuilders for all the temporary
+       variables here.
+       (Foreach.TemporaryVariable): Use Block.AddTemporaryVariable() for
+       non-iterator variables.
+
+2005-06-05  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs (Foreach.TemporaryVariable): Create the
+       LocalBuilder in the Emit phase and not in Resolve since in some
+       situations, we don't have an ILGenerator during Resolve; see
+       2test-19.cs for an example.
+
+2005-06-04  Martin Baulig  <martin@ximian.com>
+
+       The big Foreach rewrite - Part II.
+
+       * typemanager.cs (TypeManager.object_getcurrent_void): Replaced
+       with `PropertyInfo ienumerator_getcurrent'.
+
+       * codegen.cs (VariableStorage): Removed.
+
+       * statement.cs
+       (Foreach): Derive from Statement, not ExceptionStatement.
+       (Foreach.CollectionForeach): New nested class.  Moved all the code
+       dealing with collection foreach here.
+       (Foreach.ForeachHelperMethods): Removed.
+       (Foreach.TemporaryVariable): Implement IMemoryLocation.
+
+2005-05-23  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs (Try.DoResolve): Don't create a `finally' if we
+       don't need to.  Fix #75014.
+
+2005-05-26  Raja R Harinath  <rharinath@novell.com>
+
+       Improve user-defined conversion handling.
+       * convert.cs (GetConversionOperators): Rewrite.  Return only the
+       applicable operators.
+       (AddConversionOperators): New.  Helper for GetConversionOperators.
+       (FindMostEncompassedType, FindMostEncompassingType): Verify that
+       there is only one most encompassed/encompassing type.
+       (FindMostSpecificSource, FindMostSpecificTarget): Remove
+       "applicable operator" handling.
+       (UserConversion): Move cache here from GetConversionOperators.
+       Directly cache the chosen operator, rather than the whole
+       MethodGroup.
+       (ExplicitNumericConversion): Fix buggy implementation of Decimal
+       case.  Allow conversion of decimal to sbyte and byte too.
+       * expression.cs (EmptyExpression.Grab, EmptyExpression.Release):
+       New static methods.  Used to avoid allocating EmptyExpressions in
+       convert.cs.
+
+2005-05-24  Duncan Mak  <duncan@novell.com>
+
+       * ecore.cs (CastFromDecimal): New class for casting a decimal to
+       another class, used in Convert.ExplicitNumericConversion.
+       (CastToDecimal): New class, similar to above, but casts to
+       System.Decimal, used in Convert.ImplicitNumericConversion and also
+       in explicit convesion from double/float to decimal.
+
+       * convert.cs (ImplicitNumericConversion): Handle implicit
+       conversions to System.Decimal.
+       (ExplicitNumericConversion): handle explicit conversions to
+       System.Decimal.
+
+       This fixes #68711.
+       
+2005-05-20  Miguel de Icaza  <miguel@novell.com>
+
+       * typemanager.cs: Do not throw an exception in the TypeBuilder
+       case, we take care of it on the TypeCode.
+
+2005-05-17  Marek Safar  <marek.safar@seznam.cz>
+       
+       * attribute.cs (Attribute.ResolveArguments): GuidAttribute check
+       is back.
+       
+       * cs-parser.jay: Catch more lexical errors.
+       
+       * report.cs: Add one more Error method.
+       
+       * rootcontext.cs,
+       * typemanager.cs: Register System.Runtime.InteropServices.GuidAttribute
+
+2005-05-20  Martin Baulig  <martin@ximian.com>
+
+       * class.cs (TypeContainer.CircularDepException): Removed.
+       (TypeContainer.DefineType): Removed the `InTransit' stuff.
+       (TypeContainer.CheckRecursiveDefinition): Check for circular class
+       (CS0146) and interface (CS0529) dependencies here.
+
+2005-05-20  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (New.DoResolve): Move the CS0712 check above the
+       CS0144 check; otherwise it can never be reached.
+
+2005-05-20  Martin Baulig  <martin@ximian.com>
+
+       * cs-parser.jay: Fix CS0080 check; add CS0231 and CS0257 from MCS.
+
+2005-05-20  Martin Baulig  <martin@ximian.com>
+
+       * class.cs (TypeContainer.DefineType): Fix CS0698 check.
+
+       * typemanager.cs (TypeManager.IsAttributeType): New public method.
+
+2005-05-19  Martin Baulig  <martin@ximian.com>
+
+       * delegate.cs
+       (ImplicitDelegateCreation.Check): Added `bool check_only' argument
+       to disable error reporting.
+
+       * convert.cs (Convert.ImplicitStandardConversionExists): Use it
+       here since we don't want to report an error; see the new test-336.cs.
+
+2005-05-19  Raja R Harinath  <rharinath@novell.com>
+
+       * statement.cs (ToplevelBlock.GetParameterReference)
+       (ToplevelBlock.IsParameterReference,ToplevelBlock.IsLocalParameter):
+       Move here from class Block.
+       * ecore.cs (SimpleName.SimpleNameResolve): Update to changes.
+       * expression.cs (ParameterReference.DoResolveBase): Likewise.
+
+2005-05-18  Martin Baulig  <martin@ximian.com>
+
+       Fix #74978.
+
+       * flowanalysis.cs
+       (FlowBranching.Reachability): Add non-static public And() and Or()
+       methods.
+       (FlowBranchingSwitch): New class; do the `break_origins' thing
+       like in FlowBranchingLoop.
+       (FlowBranching.UsageVector.MergeBreakOrigins): Also merge the
+       reachability, not just locals and parameters.
+       (FlowBranching.MergeChild): Remove some of the hacks for loop and
+       switch; MergeBreakOrigins() now takes care of that.
+
+2005-05-18  Martin Baulig  <martin@ximian.com>
+
+       * flowanalysis.cs (FlowBranching.UsageVector.MergeChild): If we're
+       a loop and may leave it, reset the barrier; fixes #74974.
+
+2005-05-16  Raja R Harinath  <rharinath@novell.com>
+
+       Fix test-382.cs.  Emit values of decimal constants.
+       * class.cs (TypeContainer.RegisterFieldForInitialization): New.
+       Carved out of ...
+       (TypeContainer.AddField): ... this.
+       (TypeContainer.EmitFieldInitializers): Allow the list of fields
+       with initializers to include 'Const's.
+       (ClassPart.RegisterFieldForInitialization): Forward to
+       PartialContainer.
+       * const.cs (Const.Const): Pass initializer to base class.
+       (Const.Define): In case of decimal constants, register them for
+       initialization in a static constructor.
+
+2005-05-14  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs (Block.Resolve): Correctly handle unreachable code;
+       do not call ResolveUnreachable() on unreachable statements in
+       here, see the comment in the source code.
+
+2005-05-13  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #74934.
+       * expression.cs (BinaryResolveOperator): If one of the operands of
+       an equality comparison is 'null' and the other is a pointer type,
+       convert the null to a NullPointer.
+       * convert.cs (ImplicitReferenceConversion): If the expression is a
+       NullLiteral and the target type is a pointer type, return a
+       NullPointer instead.
+       (ImplicitConversionStandard): Likewise.
+
+2005-05-13  Marek Safar  <marek.safar@seznam.cz>
+       
+       * cs-parser.jay: Set readonly context based on special constructs.
+       
+       * expression.cs (LocalVariableReference.DoResolveBase): Improved
+       readonly variable error handling.
+       
+       * rootcontext.cs (EmitCode): Don't verify members when error
+       occurred.
+       
+       * statement.cs (LocalInfo): Add reaodnly context information.
+       (SetReadOnlyContext, GetReadOnlyContext): New methods.
+
+2005-05-17  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (Argument.Resolve): Turn on flow analysis; fix
+       #70970. 
+
+2005-05-13  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs (Block.Resolve, ResolveUnreachable): Correctly
+       handle unreachable blocks.
+
+2005-05-13  Martin Baulig  <martin@ximian.com>
+
+       * class.cs
+       (ConstructorInitializer.GetOverloadedConstructor): Don't crash.
+       (MethodCore.CheckCore): Use TypeManager.IsEqual(); fix #74904 and
+       #74905. 
+
+2005-05-13  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs (Block.Resolve): Make the `bool unresolved' flag an
+       instance variable, not a local.  Fix #74873.
+       (Block.ResolveUnreachable): Set it to true here.
+
+2005-05-12  Martin Baulig  <martin@ximian.com>
+
+       * cs-parser.jay (property_declaration): Pass the `current_class',
+       not the `current_container' to Property's .ctor.  Fixes #74912.
+
+2005-05-11  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs (Closure): Copy this from MCS and merge all the
+       GMCS-specific changes into it.
+
+2005-05-12  Raja R Harinath  <harinath@gmail.com>
+
+       Fix #74920.
+       * typemanager.cs (unmanaged_enclosing_types): New.
+       (IsUnmanagedType): Avoid infloops by using
+       'unmanaged_enclosing_types' to talk with recursive invocations.
+
+2005-05-11  Duncan Mak  <duncan@novell.com>
+
+       * cs-tokenizer.cs (get_cmd_arg): Check that 'c' is not -1 before
+       continuing to process for 'arg'.
+       (handle_preprocessing_directive): Check the argument of the #endif
+       directive and report error CS1025 if there are any trailing
+       characters.
+
+       According to the C# spec, having even whitespace after the #endif
+       directive is illegal; however, because we call arg.TrimEnd ()
+       beforehand, we have the same behavior as csc, allowing whitespace
+       after the directive.
+
+       Fixes #74892.
+
+2005-05-11  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #74863.
+       
+       * class.cs (ConstructorInitializer.GetOverloadedConstructor): Removed.
+       (Constructor.GetObsoleteAttribute): Implemented correctly.
+
+2005-05-10  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (Constraints.Resolve): Report CS0246 if we cannot
+       resolve the type; fixes #74864.
+       (DefaultValueExpression): Create the LocalTemporary in Emit(), not
+       in DoResolve(); fixes #74862.
+
+2005-05-10  Martin Baulig  <martin@ximian.com>
+
+       * support.cs (ReflectionParameters.ParameterModifier): Use
+       `Parameter.Modifier.REF' if we both have `ParameterAttributes.Out'
+       and `ParameterAttributes.In'.  Fixes #74884.
+
+2005-05-10  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs (TypeManager.MemberLookup_FindMembers): Don't use
+       the cache if we're just looking for `MemberTypes.NestedType' in a
+       generic instance.
+
+       * ecore.cs (Expression.ResolveAsTypeTerminal): Don't check the
+       constraints if we're still resolving the type tree.
+       (Expression.MemberLookup): If we're resolving the type tree, only
+       look for `MemberTypes.NestedType' since we're only interested in
+       getting types.
+
+       * class.cs (TypeContainer.DefineType): Don't resolve the type
+       parameters here; do this later in ResolveType() after the type
+       tree has been resolved.
+       (TypeContainer.ResolveType): New public method; this is called
+       after the type tree is resolved and before the types are being
+       populated.  We resolve the generic constraints here.
+       (TypeContainer.DoDefineMember): Check the constraints on our base
+       class and interfaces.
+
+       * decl.cs (DeclSpace.ResolveBaseTypeExpr): Make this protected;
+       set the `ResolvingTypeTree' flag on the EmitContext.
+
+       * codegen.cs (EmitContext.ResolvingTypeTree): New public field.
+
+2005-05-10  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (Method.Define): Catch attempt for Finalizer declaration.
+       
+       * expression.cs (Argument.GetParameterModifier): Turned to property.
+       (Invocation.Error_InvalidArguments): Add more descriptive errors.
+       
+       * parameter.cs (Parameter.GetModifierSignature): Translates modifier to
+       its C# equivalent.
+       
+2005-05-09  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #74852.
+       * decl.cs (MemberCache.AddMethods): Register override methods,
+       rather than non-override methods.
+       * typemanager.cs (RegisterOverride): New.
+       (IsOverride): Update.
+
+2005-05-09  Marek Safar  <marek.safar@seznam.cz>
+
+       * typemanager.cs (TypeManager): Moved InitGenerics to Reset method.
+
+2005-05-06  Martin Baulig  <martin@ximian.com>
+
+       * attribute.cs
+       (Attributable.IsClsComplianceRequired): Fix typo in the method name.
+       (AttributeTester.AnalyzeTypeCompliance): Add generics support.
+
+2005-05-09  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #73105.
+       
+       * ecore.cs (SimpleName.SimpleNameResolve): Add in_transit to catch
+       recursive declaration.
+       
+       * statement.cs (Block.ResolveMeta): Report any error in resolving.
+       
+2005-05-06  Marek Safar  <marek.safar@seznam.cz>
+
+       * cfold (DoConstantNumericPromotions): Don't try to convert 0 enum.
+       
+       * expression.cs (Binary.DoResolve): (x && 0) is always 0.
+
+2005-05-05  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #74797.
+       * decl.cs (DeclSpace.FamilyAccessible): 
+       Use TypeManager.IsNestedFamilyAccessible.
+
+       Fix reopened #64812.
+       * typemanager.cs (Closure.Filter): Introduce checks for 'protected
+       internal'.
+
+2005-05-04  Raja R Harinath  <rharinath@novell.com>
+           Abin Thomas  <projectmonokochi@rediffmail.com>
+           Anoob V E  <projectmonokochi@rediffmail.com>
+           Harilal P R  <projectmonokochi@rediffmail.com>
+
+       Fix #64812.
+       * typemanager.cs (Closure.CheckValidFamilyAccess): Don't blindly
+       allow access to all static members.
+
+2005-05-04  Martin Baulig  <martin@ximian.com>
+
+       * ecore.cs (FieldExpr.DoResolveLValue): Always call fb.SetAssigned().
+
+2005-05-04  Martin Baulig  <martin@ximian.com>
+
+       Fix #74655.
+
+       * statement.cs (Switch.SimpleSwitchEmit): Always emit the default
+       section at the end; make things work if `default' is not the last
+       section.        
+
+2005-05-04  Martin Baulig  <martin@ximian.com>
+
+       Fix #70400.
+
+       * statement.cs (Switch): Replaced the `got_default' field with a
+       `default_section' one.
+       (Switch.CheckSwitch): Set `default_section' here.
+       (Switch.Resolve): If we're a constant switch and the constant is
+       not found, use the default section.
+
+2005-05-03  Martin Baulig  <martin@ximian.com>
+
+       * expression.cs (ArrayAccess.EmitGetLength): New public method.
+
+       * statement.cs (Foreach.ArrayForeach): New nested class.
+       (Foreach.TemporaryVariable): New nested class.
+       (Foreach.EmitArrayForeach): Removed; this is now in the new
+       ArrayForeach class.
+
+2005-05-03  Raja R Harinath  <rharinath@novell.com>
+
+       * pending.cs (BaseImplements): Move the #74773 fix here.  This is
+       more conservative.
+       (VerifyPendingMethods): Revert change below.
+
+       * typemanager.cs (IsOverride, RegisterNonOverride): New.
+       * decl.cs (MemberCache.AddMethod): Register "non-override" methods
+       that used to trigger warning -28.  Remove warning -28.
+       * expression.cs (Invocation.OverloadResolve): Use
+       TypeManager.IsOverride to distinguish override methods.
+
+       Fix #74773.
+       * pending.cs (VerifyPendingMethods): If a base type implements the
+       requested interface, don't bother checking individual methods of
+       the base type.  As a side-effect, this prevents the creation of
+       unnecessary proxies.
+
+2005-05-02  Martin Baulig  <martin@ximian.com>
+
+       Fix #70182.
+
+       * flowanalysis.cs (FlowBranching.UsageVector.MergeJumpOrigins):
+       Also `And' the locals if the old vector is null.
+       (FlowBranching.UsageVector.BitVector.And): Allow `vector' being
+       null; in this case we basically reset all the variables.        
+
+2005-05-02  Martin Baulig  <martin@ximian.com>
+
+       Fix #74529.
+
+       * flowanalysis.cs (FlowBranching.UsageVector.MergeBreakOrigins):
+       Added `FlowBranching branching' argument; always `and' the
+       variables instead of `or'ing them unless we're an infinite loop.
+
+       * statement.cs (While.Resolve): Create a new sibling unless we're
+       infinite.       
+
+2005-05-02  Martin Baulig  <martin@ximian.com>
+
+       Fix #70140.
+
+       * class.cs (ConstructorInitializer.Resolve): Added `Block block'
+       arguments; use it instead of creating a new TopLevelBlock.
+       (Constructor.Emit): Call `block.ResolveMeta ()' before resolving
+       our ConstructorInitializer.
+
+       * statement.cs
+       (TopLevelBlock.TopLevelBranching): New public property.
+       (TopLevelBlock.ResolveMeta): New public method; call ResolveMeta()
+       and create our `TopLevelBranching'.
+
+       * codegen.cs (EmitContext.ResolveTopBlock): If we're not an
+       anonymous method host, use `block.TopLevelBranching' rather than
+       creating a new branching.
+
+2005-04-20  Miguel de Icaza  <miguel@novell.com>
+
+       * anonymous.cs (ScopeInfo.AddChild): when adding a new child to
+       a ScopeInfo, if any of the current children is a child of the new
+       entry, move those children there.
+
+2005-04-30  Martin Baulig  <martin@ximian.com>
+
+       * statement.cs (Switch.SimpleSwitchEmit): Reset `default_at_end'
+       at the beginning of a SwitchSection.  Fix #73335.
+
+2005-04-27  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #74378
+       * class.cs (EmitFieldInitializers): Use FieldExpr in initializer.
+       
+       * ecore.cs (FieldExpr): Add a new ctor with in_initializer.
+       (FieldExpr.DoResolve): Obsolete members are ignored for field
+       initializers.
+       
+2005-04-26  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (AreOverloadedMethodParamsClsCompliant): Add array
+       of arrays detection.
+
+       * class.cs (Interface.VerifyClsCompliance): Add base interfaces
+       verification.
+       (Field.VerifyClsCompliance): Volatile fields are not compliant.
+
+       * decl.cs (MemberCache.VerifyClsParameterConflict): Add array of
+       arrays report.
+
+2005-04-25  Ben Maurer  <bmaurer@ximian.com>
+
+       * cs-parser.jay: Use the prefered version of -unsafe in error
+       message.
+
+2005-04-22  Marek Safar  <marek.safar@seznam.cz>
+
+       * driver.cs (CompilerCallableEntryPoint.Invoke): Reset under any
+       circumstances.
+
+2005-04-20  John Luke  <john.luke@gmail.com>
+
+       * driver.cs: fix typo in error message, --outout to --output
+
+2005-04-30  Martin Baulig  <martin@ximian.com>
+
+       * attribute.cs (Attribute.CheckSecurityActionValidity): Correctly
+       handle the .NET 2.x security attributes.
+
+2005-04-30  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs
+       (TypeManager.ExpandInterfaces): Don't add things twice.
+
+       * class.cs
+       (TypeContainer.VerifyClsCompliance): Allow generic instances.
+
+2005-04-29  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (Constraints.ResolveTypes): Expand interfaces.
+
+       * anonymous.cs: Added support for anonymous generic methods.
+
+2005-04-29  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs (TypeManager.GetInterfaces): Correctly handle
+       generic instances.
+
+2005-04-29  Martin Baulig  <martin@ximian.com>
+
+       * generic.cs (TypeManager.HasConstructorConstraint): Removed.
+
+       * expression.cs (New.DoResolve): Fix the CS0304 check.
+
+2005-04-29  Martin Baulig  <martin@ximian.com>
+
+       * typemanager.cs (TypeManager.GetFullName): Updated to the new
+       naming schema.
+
+       * class.cs (MethodCore.IsDuplicateImplementation): If we're an
+       explicit interface implementation, compare the interface types.
+       (MethodData.Define): Use the new naming scheme from the latest
+       .NET 2.x beta2.
+       (MemberBase.DoDefineBase): Resolve `InterfaceType' here.
+
+       * decl.cs (MemberName.GetMemberName): Removed.
+       (MemberName.MethodName, FullName): New properties.
+
+2005-04-25  Raja R Harinath  <rharinath@novell.com>
+
+       * gmcs.exe.config: Update v2.0.40607 -> v2.0.50215.
+
 2005-04-22  Martin Baulig  <martin@ximian.com>
 
        * generic.cs (GenericMethod): Create the EmitContext in the
        * driver.cs (Driver.parse): Synchronize parser ErrorOutput with
        Report.Stderr.
        
+2005-04-18  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #74481.
+       * expression.cs (Binary.EqualsNullIsReferenceEquals): New.
+       (Binary.DoResolveOperator): Use it to avoid blindly optimizing out
+       all null comparisons against reference types.
+
 2005-04-18  Marek Safar  <marek.safar@seznam.cz>
 
        Fix# 74565
        According to the spec, 
 
        In a member access of the form E.I, if E is a single identifier,
-       and if the meaning of E as a simple-name (§7.5.2) is a constant,
+       and if the meaning of E as a simple-name (§7.5.2) is a constant,
        field, property, localvariable, or parameter with the same type as
-       the meaning of E as a type-name (§3.8), then both possible
+       the meaning of E as a type-name (§3.8), then both possible
        meanings of E are permitted.
 
        We did not check that E as a simple-name had the same type as E as
        According to the spec, 
 
        In a member access of the form E.I, if E is a single identifier,
-       and if the meaning of E as a simple-name (§7.5.2) is a constant,
+       and if the meaning of E as a simple-name (§7.5.2) is a constant,
        field, property, localvariable, or parameter with the same type as
-       the meaning of E as a type-name (§3.8), then both possible
+       the meaning of E as a type-name (§3.8), then both possible
        meanings of E are permitted.
 
        We did not check that E as a simple-name had the same type as E as
        basically ignored the method name.  Now we make sure that the
        method name is one of the valid indexer names.
 
-2004-03-14  Gustavo Giráldez  <gustavo.giraldez@gmx.net>
+2004-03-14  Gustavo Giráldez  <gustavo.giraldez@gmx.net>
  
        * support.cs (SeekableStreamReader): Keep track of stream byte
        positions and don't mix them with character offsets to the buffer.
 
-       Patch from Gustavo Giráldez
+       Patch from Gustavo Giráldez
 
 2004-03-15  Marek Safar  <marek.safar@seznam.cz>
 
@@ -10929,7 +16257,7 @@ Tue Jan 28 17:30:57 CET 2003 Paolo Molaro <lupus@ximian.com>
 
        * driver.cs: fixed bug #37187.
 
-2003-01-27  Pedro Martinez Juliá  <yoros@wanadoo.es>
+2003-01-27  Pedro Martinez Juliá  <yoros@wanadoo.es>
 
        * expression.cs (IndexerAccess.DoResolve): Before trying to resolve
        any indexer, it's needed to build a list with all the indexers in the
@@ -12317,7 +17645,7 @@ Tue Dec 3 19:32:04 CET 2002 Paolo Molaro <lupus@ximian.com>
        without debugging support.
 
        * delegate.cs (Delegate.CloseDelegate): Removed, use CloseType instead.
-       Fixes bug #30235.  Thanks to Ricardo Fernández Pascual.
+       Fixes bug #30235.  Thanks to Ricardo Fernández Pascual.
 
 2002-09-12  Martin Baulig  <martin@gnome.org>