+2005-03-22 Martin Baulig <martin@ximian.com>
+
+ * delegate.cs (Delegate.VerifyMethod): Call
+ TypeManager.GetParameterData() after method inference, not before.
+
+2005-02-25 Marek Safar <marek.safar@seznam.cz>
+
+ * attribute.cs (Atttribute.Resolve): Add cache for parameter-less
+ attributes. Removed useless attribute double check.
+ It saves almost 2MBs for corlib.
+
+2005-02-25 Raja R Harinath <rharinath@novell.com>
+
+ Fix #72924.
+ * statement.cs (ExpressionStatement.Resolve): Make robust to being
+ called twice in case of error.
+
+2005-02-23 Chris Toshok <toshok@ximian.com>
+
+ Fix compiler portions of #72827.
+ * statement.cs (Block.Emit): call Begin/EndScope on the
+ EmitContext instead of the ILGenerator.
+
+ * codegen.cs (EmitContext.BeginScope): new method, call
+ ILGenerator.BeginScope as well as the SymbolWriter's OpenScope (if
+ we have one.)
+ (EmitContext.BeginScope): same, but EndScope and CloseScope
+
+ * symbolwriter.cs (SymbolWriter.OpenScope): get the current il
+ offset and call the superclass's OpenScope(int) with it.
+ (SymbolWriter.CloseScope): get the current il
+ offset and call superclass's CloseScope(int) with it.
+
+2005-02-23 Marek Safar <marek.safar@seznam.cz>
+
+ * anonymous.cs (AnonymousMethod.Compatible): Fixed to report
+ CS1677 for out and ref as well.
+
+ * class.cs (Method.Define): Add error CS1599 detection.
+
+ * cs-parser.jay: Add CS1609, CS1670, CS1627 detection.
+
+ * cs-tokenizer.cs (xtoken): Add error CS1646 detection.
+
+ * delegate.cs (Delegate.Define): Add error CS1599 detection.
+
+ * support.cs.cs (ModifierDesc): New helper method.
+
+2005-02-23 Raja R Harinath <rharinath@novell.com>
+ Abin Thomas <projectmonokochi@rediffmail.com>
+ Anoob V E <projectmonokochi@rediffmail.com>
+ Harilal P R <projectmonokochi@rediffmail.com>
+
+ Fix #57851, #72718.
+ * class.cs (ConstructorBuilder.Resolve): Make sure that the second
+ MemberLookup (used for error reporting) actually returns a result.
+ Fix error report number (122, not 112).
+
+2005-02-22 Abin Thomas <projectmonokochi@rediffmail.com>
+ Anoob V E <projectmonokochi@rediffmail.com>
+ Harilal P R <projectmonokochi@rediffmail.com>
+
+ Fix #71134.
+ * pending.cs (PendingImplementation.GetAbstractMethods):
+ Find NonPublic members too.
+
+2005-02-22 Marek Safar <marek.safar@seznam.cz>
+
+ * expression.cs.cs (ConditionalLogicalOperator.DoResolve):
+ Fixed error 217.
+
+ * class.cs (MethodCore.CheckMethodAgainstBase):
+ Add error 239 report.
+
+2005-02-21 Raja R Harinath <rharinath@novell.com>
+
+ Fix #68955.
+ * expression.cs (Invocation.IsApplicable): Make public.
+ (Invocation.IsParamsMethodApplicable): Likewise.
+ * delegate.cs (Delegate.VerifyApplicability): Don't use
+ Invocation.VerifyArgumentCompat for parameter applicability
+ testing. Use Invocation.IsApplicable and
+ Invocation.IsParamsMethodApplicable.
+
+2005-02-21 Marek Safar <marek.safar@seznam.cz>
+
+ * ecore.cs (PropertyExpr.DoResolve): Add error 214 report.
+
+ * class.cs (Operator.Define): Add error 217 report.
+
+2005-02-21 Raja R Harinath <rharinath@novell.com>
+
+ * namespace.cs (UsingEntry.Resolve): Undo change below.
+
+2005-02-21 Raja R Harinath <rharinath@novell.com>
+
+ Fix #72756.
+ * ecore.cs (Expression.MemberLookupFailed): Add argument to
+ disable the error message when the extended MemberLookup also
+ fails.
+ (Expression.MemberLookupFinal): Update.
+ (SimpleName.DoSimpleNameResolve): Update.
+ * expression.cs (MemberAccess.ResolveNamespaceOrType):
+ Don't use MemberLookupFinal.
+ (New.DoResolve): Update.
+ (BaseAccess.CommonResolve): Update.
+
+2005-02-21 Raja R Harinath <rharinath@novell.com>
+
+ Fix #72732.
+ * attribute.cs (Attribute.ResolveType): If a 'resolve_error' had
+ occured previously, don't resolve again.
+
+2005-02-21 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #69949
+ * attribute.cs (Attribute.GetAttributeUsage): Add EmitContext
+ argument. Call ResolveAttributeUsage for unresolved.
+ when types doesn't match ctor arguments.
+
+ * class.cs (DoDefineMembers.TypeContainer): Removed safety check
+ for nested attribute classes.
+ (Class.attribute_usage): Removed.
+ (Class.ResolveAttributeUsage): Resolves AttributeUsageAttribute
+ for attribute class.
+
+ * namespace.cs (UsingEntry.Resolve): Don't destroy NamespaceEntry.
+
+ * rootcontext.cs (RegisterAttribute): Removed, attributes are
+ now normal types.
+ (attribute_types): Removed.
+ (EmitCode): Global attributes are emited as the latest.
+
+2005-02-18 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (EmitFieldInitializers): Don't emit field initializer
+ for default values when optimilization is on.
+
+ * constant.cs (Constant.IsDefaultValue): New property.
+
+ * driver.cs: Add /optimize handling.
+
+ * constant.cs,
+ * ecore.cs,
+ * literal.cs: Implement new IsDefaultValue property.
+
+ * rootcontext.cs (Optimize): New field, holds /optimize option.
+
+2005-02-18 Raja R Harinath <rharinath@novell.com>
+
+ Fix crasher in re-opened #72347.
+ * namespace.cs (Namespace.Lookup): Return null if
+ DeclSpace.DefineType returns null.
+
+ Fix #72678.
+ * expression.cs (Argument.Resolve): Handle a case of CS0120 here.
+
+2005-02-18 Raja R Harinath <rharinath@novell.com>
+
+ Fix remainder of #63202. Change semantics of DoResolveLValue: it
+ now returns null if it cannot resolve to an lvalue.
+ * ecore.cs (Expression.DoResolveLValue): Return 'null' by default.
+ (Expression.ResolveLValue): Emit CS0131 error if DoResolveLValue
+ returned null. Remove check for SimpleName.
+ (EventExpr.DoResolveLValue): New.
+ * iterators.cs (Iterator.FieldExpression.DoResolveLValue): New.
+ * expression.cs (Argument.Error_LValueRequired): New. Move CS1510
+ error from ...
+ (Argument.Resolve): ... here. Use it. Use DoResolveLValue to
+ avoid CS0131 error.
+ (Unary.ResolveOperator): Move CS0211 check ...
+ (Unary.DoResolve): ... here. Use DoResolveLValue to avoid
+ CS0131 error.
+ (Unary.DoResolveLValue): Simplify.
+ (AddressOf.DoResolveLValue): New.
+ (ArrayAccess.DoResolveLValue): New.
+
+2005-02-16 Marek Safar <marek.safar@seznam.cz>
+
+ * attribute.cs (Attribute.Resolve): Add arguments casting for
+ when types doesn't match ctor arguments.
+
+2005-02-16 Raja R Harinath <rharinath@novell.com>
+
+ Fix parts of #63202.
+ * expression.cs (UnaryMutator.ResolveOperator): Remove redundant
+ lookup of operator in base type. Ensure that all checks happen
+ when the operator resolves to an "op_..." method.
+
+2005-02-15 Raja R Harinath <rharinath@novell.com>
+
+ Fix #71992.
+ * namespace.cs (NamespaceEntry.LookupNamespaceOrType): Add
+ 'ignore_cs0104' parameter. Pass it to ...
+ (NamespaceEntry.Lookup): ... this.
+ * decl.cs (DeclSpace.LookupType): Add 'ignore_cs0104' parameter.
+ * ecore.cs (SimpleName.ResolveAsTypeStep): Update.
+ (TypeLookupExpression.DoResolveAsTypeStep): Update.
+ * expression.cs (MemberAccess.IdenticalNameAndTypeName):
+ Update. Request that cs0104 errors be ignored.
+ (ComposedCast.ResolveAsTypeStep): Update.
+
+2005-02-14 Raja R Harinath <rharinath@novell.com>
+
+ Fix #59209.
+ * expression.cs (Invocation.BetterFunction): Remove support for
+ comparing virtual functions and their overrides.
+ (Invocation.IsOverride): New.
+ (Invocation.OverloadResolve): Don't consider 'override' functions
+ during candidate selection. Store them in a lookaside list.
+ If the selected method is a 'virtual' function, use the list to
+ find any overrides that are closer to the LHS type.
+
+2005-02-14 Marek Safar <marek.safar@seznam.cz>
+
+ * expression.cs (New.DoResolve): Add complex core type reduction.
+ (New.Constantify): Converts complex core type syntax like 'new int ()'
+ to simple constant.
+
+2005-02-14 Raja R Harinath <rharinath@novell.com>
+
+ * decl.cs (EntryType.EntryType): New constructor to create an
+ updated copy of a cache entry.
+ (MemberCache.AddMethods): Use it.
+ (MemberCache.ClearDeclaredOnly): Remove.
+ (MemberCache.MemberCache): Update.
+
+2005-02-11 Miguel de Icaza <miguel@novell.com>
+
+ * codegen.cs (EmitContext): Introduce the `MethodIsStatic'
+ variable. This one is represents the actual low-level declaration
+ of the method, as opposed to the semantic level `IsStatic'.
+
+ An anonymous method which is hosted into a static method might be
+ actually an instance method. IsStatic would reflect the
+ container, while MethodIsStatic represents the actual code
+ generated.
+
+ * expression.cs (ParameterReference): Use the new MethodIsStatic
+ instead of IsStatic.
+
+ * anonymous.cs (AnonymousMethod.Compatible): Pass the
+ Modifiers.STATIC to the Anonymous' Method EmitContext if static is
+ set on the current EmitContext.
+
+ * expression.cs (Cast): Overload DoResolveLValue so we can pass
+ resolve our casted expression as an LValue. This triggers the
+ proper LValue processing that is later required by Assign.
+
+ This fixes 72347.
+
+ * cs-tokenizer.cs (pp_and): recurse on pp_and, fixes #61903.
+
+2005-02-11 Marek Safar <marek.safar@seznam.cz>
+
+ C# 2.0 Fixed buffer implementation
+
+ * anonymous.cs: Update after RegisterHelperClass renaming.
+
+ * attribute.cs (AttributeTester.fixed_buffer_cache):
+ Cache of external fixed buffers.
+ (AttributeTester.GetFixedBuffer): Returns IFixedBuffer
+ implementation if field is fixed buffer else null.
+
+ * class.cs
+ (TypeContainer.AddField): Accept FieldMember instead of Field.
+ (FieldBase.IsFieldClsCompliant): Extracted code from
+ VerifyClsCompliance descendant customization.
+ (FixedField): New class handles fixed buffer fields.
+ (FixedFieldExternal): Keeps information about imported fixed
+ buffer.
+ (IFixedField): Make access to internal or external fixed buffer
+ same.
+
+ * cs-parser.jay: Add fixed buffer parsing.
+
+ * ecore.cs (FieldExpr.Emit): Add special emit case for fixed
+ buffer.
+
+ * expression.cs (Indirection): Extended implementation to accept
+ fixed buffer field.
+ (PointerArithmetic.Emit): Get element from fixed buffer as well.
+ (ElementAccess.MakePointerAccess): Get type as parameter.
+ (DoResolve): Add fixed buffer field expression conversion.
+ (DoResolveLValue): Ditto.
+ (FixedBufferPtr): New class. Moved most of original ArrayPtr.
+ (ArrayPtr): Derives from FixedBufferPtr.
+ (ArrayPtr.Emit): Add extra emit for array elements.
+
+ * flowanalysis.cs.cs (StructInfo): Use FieldMember.
+
+ * rootcontext.cs (CloseTypes): Emit CompilerGenerated attribute
+ for compiler generated types.
+ (RegisterCompilerGeneratedType): Renamed from RegisterHelperClass.
+
+ * statement.cs (Fixed): Refactored to be easier add fixed buffer
+ and consume less memory.
+ (Fixed.Resolve): Add fixed buffer case.
+
+ * typemanager.cs (compiler_generated_attr_ctor,
+ fixed_buffer_attr_ctor): Add new 2.0 compiler attributes.
+ (HasElementType): Add our own implementation to work on every
+ runtime.
+
+2005-02-11 Miguel de Icaza <miguel@novell.com>
+
+ * anonymous.cs (CaptureContext): Track whether `this' has been
+ referenced.
+
+ * expression.cs (This.ResolveBase): Call CaptureThis. Before we
+ only captured `this' if it was implicitly done (instance
+ methods/variables were used).
+
+ * codegen.cs (EmitContext.CaptureThis): New method to flag that
+ `this' must be captured.
+
+2005-01-30 Miguel de Icaza <miguel@novell.com>
+
+ * anonymous.cs (CreateMethodHost): If there Scope.ScopeTypeBuilder
+ is null it means that there has been no need to capture anything,
+ so we just create a sibling.
+
+ Renamed `EmitHelperClasses' to `EmitAnonymousHelperClasses'
+
+ Just a partial fix. The other half is fairly elusive.
+
+2005-02-10 Raja R Harinath <rharinath@novell.com>
+
+ Fix #52586, cs0121-4.cs.
+ * decl.cs (MemberCache.DeepCopy): Rename from SetupCache. Take
+ and return a hashtable.
+ (MemberCache.ClearDeclaredOnly): New.
+ (MemberCache.MemberCache): Update to change. Make a deep copy of
+ the method_hash of a base type too.
+ (MemberCache.AddMethods): Adapt to having a deep copy of the base
+ type methods. Overwrite entries with the same MethodHandle so
+ that the ReflectedType is correct. The process leaves in base
+ virtual functions and their overrides as distinct entries.
+ (CacheEntry): Now a class instead of a struct. It shouldn't alter
+ matters since it was boxed in a ArrayList before.
+ (CacheEntry.Member, CacheEntry.EntryType): Remove 'readonly'
+ modifier.
+ * expression.cs (Invocation.BetterFunction): Simplify. Handle the
+ case of a virtual function and its override (choose the overload
+ as better).
+ (Invocation.OverloadResolve): Avoid 'override' members during
+ 'applicable_type' calculation.
+
+2005-02-09 Raja R Harinath <rharinath@novell.com>
+
+ Combine two near-redundant caches.
+ * typemanager.cs (method_params): Rename from method_internal_params.
+ (TypeManager.GetParameterData): New. Replace
+ Invocation.GetParameterData.
+ (TypeManager.LookupParametersByBuilder): Remove.
+ * expression.cs (Invocation.method_parameter_cache): Remove.
+ (Invocation.GetParameterData): Remove.
+ Update to changes.
+ * anonymous.cs, attribute.cs, convert.cs, delegate.cs:
+ Update to changes.
+
+2005-02-08 Raja R Harinath <rharinath@novell.com>
+
+ Fix #72015.
+ * delegate.cs (Delegate.DefineType): When bootstrapping corlib, if
+ TypeManager.multicast_delegate_type is null, resolve it by looking
+ up "System.MulticastDelegate".
+ * rootcontext.cs (RootContext.ResolveCore): Simplify.
+
+2005-02-07 Abin Thomas (NOSIP) <projectmonokochi@rediffmail.com>
+ Anoob V.E (NOSIP) <projectmonokochi@rediffmail.com>
+ Harilal P.R (NOSIP) <projectmonokochi@rediffmail.com>
+
+ Fix cs0164.cs.
+ * statement.cs (LabeledStatement.Resolve): Don't set 'referenced'.
+ (LabeledStatement.AddReference): New. Set 'referenced'.
+ (Goto.Resolve): Use it.
+
+2005-02-05 John Luke <john.luke@gmail.com>
+
+ * driver.cs: remove duplicate -doc line in Usage ()
+
+2005-02-04 Raja R Harinath <rharinath@novell.com>
+
+ * location.cs (Location.AddFile): Fix CS2002 error report.
+
+2005-02-02 Martin Baulig <martin@ximian.com>
+
+ * delegate.cs (Delegate.DefineType): Report an internal error if
+ TypeManager.multicast_delegate_type is null. See bug #72015 for
+ details.
+
+2005-02-02 Raja R Harinath <rharinath@novell.com>
+
+ Fix a crasher in a variant of #31984.
+ * const.cs (Constant.CheckBase): New override that defers the
+ new-or-override check in case the base type hasn't been populated
+ yet.
+ (Constant.Define): Ensure the new-or-override check is performed.
+
+2005-02-01 Duncan Mak <duncan@ximian.com>
+
+ * const.cs (LookupConstantValue): Check that `ce' is not null
+ before calling GetValue ().
+
+2005-02-01 Raja R Harinath <rharinath@novell.com>
+
+ Fix test-334.cs (#69519).
+ * cs-parser.jay (using_alias_directive): Pass in an expression to
+ NamespaceEntry.UsingAlias.
+ (using_namespace_directive): Pass in an expression to
+ NamespaceEntry.Using.
+ (namespace_name): Don't flatten to a string.
+ * namespace.cs (NamespaceEntry.AliasEntry): Store an expression.
+ (NamespaceEntry.AliasEntry.Resolve): Lookup using
+ ResolveAsTypeStep.
+ (NamespaceEntry.UsingEntry): Likewise.
+ (NamespaceEntry.Using,NamespaceEntry.UsingAlias): Update to
+ changes.
+ (NamespaceEntry.LookupForUsing): Remove.
+ (NamespaceEntry.LookupNamespaceOrType): Add support for dotted
+ names.
+ (NamespaceEntry.Lookup): Remove support for dotted names.
+
+2005-02-01 Raja R Harinath <rharinath@novell.com>
+
+ * namespace.cs (NamespaceEntry.NamespaceEntry): Simplify, and
+ split into two.
+ (NamespaceEntry.ImplicitParent): Compute on demand.
+ (NamespaceEntry.Doppelganger): New implicit namespace-entry that
+ parallels the current.
+ (NamespaceEntry.LookupForUsing): Use it.
+ (NamespaceEntry.Lookup): If the current namespace-entry is
+ implicit, don't search aliases and using tables.
+
+2005-02-01 Raja R Harinath <rharinath@novell.com>
+
+ Fix #31984.
+ * class.cs (TypeContainer.DoDefineMembers): Don't initialize
+ BaseCache here.
+ (TypeContainer.BaseCache): Compute on demand.
+ (TypeContainer.FindMembers): Define constants and types if they're
+ not already created.
+ (FieldMember.Define): Move resetting of ec.InUnsafe before error
+ check.
+ * const.cs (Constant.Define): Make idempotent.
+
+2005-01-29 Miguel de Icaza <miguel@novell.com>
+
+ * pending.cs: Produce better code (no nops produced by using Ldarg
+ + value).
+
+ * pending.cs (PendingImplementation.DefineProxy): It was not `arg
+ i - 1' it should be arg + 1.
+
+ Fixes bug #71819.
+
+2005-01-28 Raja R Harinath <rharinath@novell.com>
+
+ * attribute.cs (Attribute.CheckAttributeType): Make private
+ non-virtual.
+ (Attribute.ResolveType): Make virtual.
+ (GlobalAttribute.ResolveType,GlobalAttribute.Resolve): Simplify
+ handling of RootContext.Tree.Types.
+
+2005-01-27 Raja R Harinath <rharinath@novell.com>
+
+ Update attribute-handling to use the SimpleName/MemberAccess
+ mechanisms.
+ * cs-parser.jay (attribute): Pass in an expression to the
+ constructors of Attribute and GlobalAttribute.
+ * attribute.cs (Attribute): Take an expression for the name.
+ (Attribute.ResolvePossibleAttributeTypes): New. Resolves the
+ passed in attribute name expression.
+ (Attribute.CheckAttributeType): Use it.
+ * ecore.cs (FullNamedExpression.ResolveAsTypeStep): New.
+ * expression.cs (MemberAccess.ResolveAsTypeStep): Move body to ...
+ (MemberAccess.ResolveNamespaceOrType): ... here. Add 'silent'
+ argument to prevent error messages if the lookup fails.
+
+2005-01-27 Marek Safar <marek.safar@seznam.cz>
+
+ * expression.cs (Indirection): Implemented IVariable interface
+ to support indirection in AddressOf operator.
+ (PointerArithmetic.Emit): Add optimalization for case where
+ result can be precomputed.
+
+2005-01-26 Martin Baulig <martin@ximian.com>
+
+ * class.cs (TypeContainer.AttributeTargets): Return the correct
+ AttributeTargets depending on our `Kind' instead of throwing an
+ exception; fixes #71632.
+
+2005-01-26 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #71257
+ * expression.cs (MemberAccess.ResolveMemberAccess): Add CS0176 test for
+ constant members.
+
+2005-03-17 Martin Baulig <martin@ximian.com>
+
+ * anonymous.cs (AnonymousMethod.method_modifiers): Change default
+ from `Modifiers.INTERNAL' to `Modifiers.PRIVATE'. Fixes #73260.
+
+2005-03-17 Martin Baulig <martin@ximian.com>
+
+ * anonymous.cs (AnonymousMethod.EmitMethod): Changed return type
+ to bool so we can return an error condition.
+ (AnonymousDelegate.Emit): Check whether AnonymousMethod.EmitMethod()
+ returned an error.
+
+2005-03-17 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (TypeMananager.IsIEnumerable): New public method.
+
+ * convert.cs (Convert.ImplicitReferenceConversion(Exists)): Allow
+ converting from an array-type of T to `IEnumerable<T>'.
+
+2005-03-16 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (Nullable.Unwrap): Implement IAssignMethod.
+ (Nullable.LiftedUnaryMutator): New public class.
+
+ * expression.cs (UnaryMutator.DoResolve): Added support for
+ Nullable Types.
+
+2005-03-14 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (Nullable.NullCoalescingOperator): Implemented.
+
+2005-03-14 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (Nullable.LiftedBinaryOperator): Added support for
+ the comparision operators `<', `>', `<=' and `>='.
+
+2005-03-13 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (Nullable.NullLiteral): Renamed to `Nullable.NullableLiteral' to
+ avoid confusion with the `NullLiteral'.
+ (Nullable.LiftedBinaryOperator): Correctly implement `==' and '!='.
+
+2005-03-13 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (Binary.ResolveOperator): For `==' and `!=', allow
+ comparing arbitrary types with the null literal.
+
+2005-03-13 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (Nullable.LiftedBinaryOperator): Add support for the
+ boolean operators '&&', '||', '&' and '|'.
+ (Nullable.OperatorTrueOrFalse): New public class.
+
+ * ecore.cs (Expression.GetOperatorTrue/False): Return an `Expression'
+ instead of a `StaticCallExpr'; added support for nullables.
+
+2005-03-10 Martin Baulig <martin@ximian.com>
+
+ * expression.cs
+ (ArrayAccess.EmitDynamicInitializers): Use `etype.IsValueType'
+ rather than `etype.IsSubclassOf (TypeManager.value_type)'.
+
+2005-03-07 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (Nullable.Unwrap): Implement IMemoryLocation and make
+ it work if `expr' is not an IMemoryLocation.
+ (Nullable.Lifted): Implement IMemoryLocation.
+ (Nullable.LiftedConversion.ResolveUnderlying): Use the correct
+ target type.
+
+2005-03-05 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (Nullable.Unwrap, Wrap): New protected classes.
+ (Nullable.Lifted): New abstract class; rewrote the lifted conversions.
+ (Nullable): Added support for lifted unary and binary operators.
+
+ * expression.cs (Unary.DoResolve): Added support for nullable types.
+ (Binary.DoResolve): Likewise.
+ (Conditional.DoResolve): Likewise.
+
+2005-03-02 Martin Baulig <martin@ximian.com>
+
+ * decl.cs (DeclSpace.SetParameterInfo): Make this virtual.
+
+ * class.cs (ClassPart.SetParameterInfo): Override this.
+ (PartialContainer.SetParameterInfo): Override this.
+ (TypeContainer.CheckConstraints): New protected method.
+ (PartialContainer.CheckConstraints): Override this and check
+ whether the same contraints were specified in all parts of a
+ partial generic type definition.
+ (PartialContainer.UpdateConstraints): New public method.
+
+ * generic.cs (TypeParameter.UpdateConstraints): New public method.
+
+2005-03-02 Martin Baulig <martin@ximian.com>
+
+ Committing a patch from Carlos Alberto Cortez to fix #72887.
+
+ * convert.cs (Convert.ExplicitReferenceConversionExists): Allow
+ casts from `T []' to `int []'.
+
+2005-03-02 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (TypeManager.IsEqual): Make this symmetric.
+
+ * expression.cs (Binary.ResolveOperator): When resolving a
+ BinaryDelegate, use `TypeManager.IsEqual (l, r)' rather than just
+ `=='. Fixes #71866. See gen-127.cs.
+
+2005-03-02 Martin Baulig <martin@ximian.com>
+
+ * class.cs (TypeContainer.DoDefineMembers): We also need a default
+ static constructor in static classes.
+
+2005-03-02 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (NullableType.Name, NullableType.FullName): Add a "?" to the name.
+ (Nullable.LiftedConversion): Added support for user-defined
+ conversions.
+
+ * cs-tokenizer.cs (Tokenizer.PutbackCloseParens): New public method.
+
+ * cs-parser.jay: Use ComposedCast everywhere instead of
+ NullableType, so we don't need to check for NullableType
+ everywhere.
+ (conditional_expression): Added `INTERR CLOSE_PARENS' rule for the
+ case where we'll be resolved into a `parenthesized_expression_0'
+ afterwards.
+
+ * convert.cs
+ (Convert.UserDefinedConversion): Added nullable conversions.
+
+2005-02-28 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (TypeManager.IsNullableType): New static method.
+ (Nullable): New abstract class.
+ (Nullable.NullLiteral): New public class.
+ (Nullable.LiftedConversion): New public class.
+
+ * cs-parser.jay (non_expression_type): Changed `builtin_types' to
+ `builtin_types opt_nullable'.
+
+ * convert.cs
+ (Convert.ImplicitConversionStandard): Added nullable conversions.
+ (Convert.ExplicitConversionStandard): Likewise.
+ (Convert.ExplicitConversion): Likewise.
+
+2005-02-26 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (ComposedCast.DoResolveAsTypeStep): Allow `dim' to
+ begin with a "?", for instance "?[]". Don't do a type lookup if
+ `dim' is empty.
+
+2005-02-25 Martin Baulig <martin@ximian.com>
+
+ The first part of Nullable Types :-)
+
+ * generic.cs (NullableType): New public class.
+ (NullCoalescingOperator): New public class.
+ (TypeArguments.Resolve): Add a CS0306 check.
+
+ * cs-parser.jay (opt_error_modifier): Removed, this was unused.
+ (opt_nullable): New rule.
+ (type): Added `opt_nullable' to `namespace_or_type_name',
+ `builtin_types' and `pointer_type'.
+ (array_type): Added `opt_nullable'.
+ (opt_rank_specifier_or_nullable): New rule; this is the
+ combination of `opt_rank_specifier' and `opt_nullable'.
+ (opt_error): New rule; catch errors here.
+ (nullable_type_or_conditional): New rule; we use this to check for
+ nullable and still detect the conditional operator.
+ (local_variable_type): Use `opt_rank_specifier_or_nullable'
+ instead `opt_rank_specifier'.
+
+ * expression.cs (ComposedCast.DoResolveAsTypeStep): Added support
+ for nullables.
+
+2005-02-24 Martin Baulig <martin@ximian.com>
+
+ * README, README.Changes: Removed; they're old and obsolete.
+
+2005-02-22 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (TypeParameter.Resolve): If resolving the constraints
+ returned an error, set `constraints' to null to avoid a crash
+ later on.
+ (TypeParameter.ResolveType): Likewise.
+
+2005-02-22 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (Constraints.ResolveTypes): Protect against being called twice.
+ (Constraints.CheckInterfaceMethod): Don't call ResolveTypes().
+ (TypeParameter.ResolveType): New public method; calls
+ constraints.ResolveTypes().
+ (TypeParameter.DefineType): Moved constraints.ResolveType() out
+ into the new ResolveType().
+ (GenericMethod.Define): Call ResolveType() on all our
+ TypeParameter's.
+
+2005-02-21 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (TypeManager.generic_nullable_type): New static public field.
+ (TypeManager.InitGenericCoreType): Lookup "System.Nullable`1".
+
+ * rootcontext.cs
+ (RootContext.ResolveCore): Resolve "System.Nullable`1".
+
+2005-02-15 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (ConstructedType.Constraints): Correctly check
+ constraints if the argument type is a type parameter; fixes
+ #72326.
+
+2005-02-02 Martin Baulig <martin@ximian.com>
+
+ * delegate.cs (Delegate.DefineType): Report an internal error if
+ TypeManager.multicast_delegate_type is null. See bug #72015 for
+ details.
+
+2005-01-29 Miguel de Icaza <miguel@novell.com>
+
+ * pending.cs: Produce better code (no nops produced by using Ldarg
+ + value).
+
+ * pending.cs (PendingImplementation.DefineProxy): It was not `arg
+ i - 1' it should be arg + 1.
+
+ Fixes bug #71819.
+
+2005-01-26 Martin Baulig <martin@ximian.com>
+
+ * cs-parser.jay (indexer_declarator): Don't report an error if we
+ have type parameters since we can be an explicit interface
+ implementation; fixes #71449.
+
+2005-01-26 Martin Baulig <martin@ximian.com>
+
+ * class.cs (TypeContainer.AttributeTargets): Return the correct
+ AttributeTargets depending on our `Kind' instead of throwing an
+ exception; fixes #71632.
+
+2005-01-26 Martin Baulig <martin@ximian.com>
+
+ * delegate.cs (Delegate.DefineType): Correctly define our type
+ parameters. Fixes #71483.
+
+2005-01-25 Raja R Harinath <rharinath@novell.com>
+
+ Fix #71602.
+ * expression.cs (MemberAccess.DoResolve): Don't complain with
+ cs0572 when the LHS of a member access has identical name and type
+ name.
+
+2005-01-25 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #71651, #71675
+ * attribute.cs (ExtractSecurityPermissionSet): Catch exceptions from
+ CreatePermission.
+ Create custom PermissionSet only for PermissionSetAttribute.
+
+2005-01-24 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #71649
+ * class.cs (StaticClass.DefineContainerMembers): Enable enums and
+ delegates in static class.
+
+2005-01-24 Martin Baulig <martin@ximian.com>
+
+ * flowanalysis.cs (FlowBranching.UsageVector.MergeChild): If we're
+ merging an implicit block, just use its reachability.
+
+ * statement.cs (Block.Resolve): Make the unreachable code check
+ work wrt. implicit blocks; see test-337 from #63842.
+
+2005-01-21 Alp Toker <alp@atoker.com>
+
+ * cs-parser.jay: destructor_declaration's container is PartialContainer
+ not Class when partial types are used, so use Kind prop instead of
+ 'is'.
+
+2005-01-22 Miguel de Icaza <miguel@ximian.com>
+
+ * cs-parser.jay: Improve error reporting when an interface
+ declares new types.
+
+2005-01-20 Dick Porter <dick@ximian.com>
+
+ * support.cs: SeekableStreamReader fix from Sandor Dobos
+ (dobos_s@ibcnet.hu) to cope with Position setting when multibyte
+ chars are read. Fixes bug 70369.
+
+2005-01-20 Raja R Harinath <rharinath@novell.com>
+
+ * cs-parser.jay (catch_clause): Simplify current_block handling
+ somewhat.
+
+2005-01-17 Miguel de Icaza <miguel@ximian.com>
+
+ * convert.cs (ImplicitStandardConversionExists): Synchronize the
+ code with ImplicitStandardConversion to handle the implicit
+ conversion of method groups into valid delegate invocations.
+
+ The problem is that in parameter handling we were using this code
+ path. Fixes bug #64698
+
+2005-01-19 Raja R Harinath <rharinath@novell.com>
+
+ * cs-parser.jay: Fix several infelicities.
+ - Avoid assigning to the parser value stack. Code like
+ '$3 = null' is unclean. Synthesize a value for the code block
+ instead.
+ - Avoid using oob_stack for storing location information. Use ...
+ (_mark_): ... this. New (empty) rule. Saves the current location
+ in $$.
+ (foreach_statement): Avoid using oob_stack for current_block
+ handling. Use technique used in for_statement and
+ using_statement. Synthesize a value for the code block to store
+ additional intermediate information.
+
+2005-01-13 Miguel de Icaza <miguel@ximian.com>
+
+ * ecore.cs (IsAccessorAccessible): Accessibility to private fields
+ of a different type is only allowed to private fields of a
+ containing type, not on fields of a base class.
+
+ See test-174.cs and error cs0122-9.cs
+
+2005-01-13 Raja R Harinath <rharinath@novell.com>
+
+ Fix test-335.cs (bug #58126).
+ * cs-parser.jay (argument): Split out non-expression parts of the
+ rule into 'non_simple_argument'.
+ (invocation_expression): Support parenthesized invocations with
+ multiple arguments, and with single non-simple arguments.
+
+2005-01-13 Raja R Harinath <rharinath@novell.com>
+
+ * cs-tokenizer.cs (xtoken): Reset 'comments_seen' in a couple more
+ places.
+
+2005-01-12 Raja R Harinath <rharinath@novell.com>
+
+ Fix cs0038-1.cs, cs1640-6.cs.
+ * ecore.cs (Expression.Resolve): Remove special-case for
+ SimpleName in error-handling.
+ (Expression.almostMatchedMembers): Relax access permission to
+ protected.
+ (Expression.MemberLookupFailed): Handle duplicates in
+ almostMatchedMembers list.
+ (SimpleName.DoSimpleNameResolve): Catch CS0038 errors earlier.
+ * expression.cs (New.DoResolve): Report CS1540 for more cases.
+ * typemanager.cs (GetFullNameSignature): Use the MethodBase
+ overload if the passed in MemberInfo is a MethodBase.
+
+2005-01-25 Martin Baulig <martin@ximian.com>
+
+ * doc.cs
+ (DocUtil.emptyParamList): Removed; use `Type.EmptyTypes' instead.
+
+2005-01-12 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #70749
+ * attribute.cs (ExtractSecurityPermissionSet): Don't report error
+ for non-CAS & merge permission sets properly.
+
+2005-01-11 Raja R Harinath <rharinath@novell.com>
+
+ Improve standard-compliance of simple name and member access
+ resolution. Fixes bugs #52697, #57200, #67520, #69519.
+ * ecore.cs (FullNamedExpression): New abstract base class
+ for Namespaces and TypeExpressions.
+ (ResolveFlags.SimpleName): Remove.
+ (SimpleName): Remove support for dotted names.
+ (SimpleName.ResolveAsTypeStep): Simplify. Now just a wrapper to
+ DeclSpace.FindType and DeclSpace.LookupType.
+ (SimpleName.DoSimpleNameResolve): Remove support for dotted names.
+ (Expression.ExprClassName): Make member function.
+ * expression.cs (MemberAccess.ResolveAsTypeStep): Support LHS being
+ a namespace. Remove creation of dotted "SimpleName"s.
+ (MemberAccess.DoResolve): Likewise.
+ * decl.cs (DeclSpace.Cache): Make private.
+ (DeclSpace.LookupInterfaceOrClass): Return a FullNamedExpression.
+ (DeclSpace.FindType): Update.
+ (DeclSpace.LookupType): Move here from RootContext. Return a
+ FullNamedExpression.
+ * namespace.cs (Namespace): Derive from FullNamedExpression
+ so that it can be part of expression resolution.
+ (Namespace.Lookup): Return an FullNamedExpression.
+ (NamespaceEntry.LookupAlias): Lookup aliases only in current
+ namespace.
+ * rootcontext.cs (NamespaceLookup): Remove.
+ (LookupType): Move to DeclSpace.
+ * attribute.cs (CheckAttributeType): Update.
+ * doc.cs (FindDocumentedType): Remove allowAlias argument.
+ (FindDocumentedTypeNonArray): Likewise.
+
+2005-01-11 Raja R Harinath <rharinath@novell.com>
+
+ Fix cs0509.cs, cs1632.cs.
+ * class.cs (TypeContainer.GetNormalBases): Don't assume !IsClass
+ is the same as IsInterface.
+ (TypeContainer.GetClassBases): Likewise.
+ * statement.cs (LabeledStatement.ig): New field.
+ (LabeledStatement.LabelTarget): Save ILGenerator which created the
+ label.
+ (LabeledStatement.DoEmit): Check that the label was created with
+ the same ILGenerator.
+
+2005-01-10 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #71058
+ * attribute.cs (GetMethodObsoleteAttribute): Need to transform
+ accessors to its properties.
+
+ * ecore.cs (PropertyExpr): Add AccessorTable to help track back
+ from accessors to property.
+
+2005-01-10 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #70722
+ * class.cs (MethodCore.CheckBase): Test base method obsoleteness
+ only for overrides.
+
+2005-01-08 Miguel de Icaza <miguel@ximian.com>
+
+ * attribute.cs: Check for null and empty strings.
+
+ I have lost another battle to Paolo.
+
+2005-01-07 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #70942
+ * class.cs (PropertyMethod): Set Parent field in ctors.
+ (SetMethod.InternalParameters): Add unsafe switch hack.
+ Override MarkForDuplicationCheck where it is appropriate.
+
+ * decl.cs (MemberCore.MarkForDuplicationCheck): New method.
+ It says whether container allows members with the same name.
+ Base default is no.
+ (DeclSpace.AddToContainer): Use MarkForDuplicationCheck.
+ Removed is_method parameter.
+
+2005-01-06 Duncan Mak <duncan@ximian.com>
+
+ * cs-tokenizer.cs (xtoken): Redo the work for signaling CS1040
+ because the previous change led to incorrect reporting of CS1032
+ ("Cannot define/undefine preprocessor symbols after first token in
+ file"). Instead of using `tokens_seen' as the only flag that
+ triggers CS1040, introduce `comments_seen'. This new flag is used
+ to signify having seen comments on the current line, so it is
+ unset after a newline.
+
+2005-01-06 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs : When searching for a type, find nested type too.
+ This fixes bug #71040.
+
+2005-01-06 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs :
+ - Warn missing member comment on those classes which also does not
+ have doc comments. Fixed bug #71041.
+ - Don't warn missing doc comment on default constructor.
+ Fixed bug #71042.
+
+2005-01-06 Duncan Mak <duncan@ximian.com>
+
+ * cs-tokenizer.cs (xtoken): After handling traditional C-style
+ comments, set `tokens_seen' to true. This allows us to detect
+ misplaced preprocessor directives (i.e. not at the beginning of
+ the a line, nor after whitespaces). In that case, report error
+ CS1040. This fixes bug #56460.
+
+ * cs-parser.jay (interface_member_declaration): Add checks for
+ IsExplicitImpl, and report CS0541 error if an interface member is
+ defined as an explicit interface declaration.
+
+2005-01-06 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #70817
+ * class.cs (PropertyMethod): Set Parent field in ctors.
+ (SetMethod.InternalParameters): Add unsafe switch hack.
+
+ * decl.cs (MemberCore.Parent): Cannot be readonly.
+
+2005-01-06 Raja R Harinath <rharinath@novell.com>
+
+ * decl.cs (DeclSpace.ResolveType): Remove.
+ (DeclSpace.ResolveBaseTypeExpr): Rename from ResolveTypeExpr.
+ Merge in code from ...
+ (DeclSpace.GetTypeResolvingEmitContext): ... here. Remove.
+ * class.cs, enum.cs: Update to changes.
+
+2005-01-06 Miguel de Icaza <miguel@ximian.com>
+
+ * anonymous.cs: Ensure that we init the scope of our parent if it
+ has not been initialized yet.
+
+2004-12-30 Duncan Mak <duncan@ximian.com>
+
+ * typemanager.cs (TypeManager.CheckStructCycles): Don't crash here
+ if field.FieldBuilder is null. Fixes #70758.
+
+ * convert.cs: Fixed some typos and updated some of the comments.
+ (ImplicitStandardConversionExists):
+ (TryImplicitIntConversion): If `target_type' is an interface and
+ the type of `ic' implements this interface, return true or a new
+ BoxedCast instead of null. This fixes #70468.
+
+2004-12-29 Duncan Mak <duncan@ximian.com>
+
+ * expression.cs (Argument.Emit): Check that Expr is
+ IMemoryLocation before casting to it, and report CS1510 otherwise.
+
+ This fixes #70402.
+
+2004-12-21 Ben Maurer <bmaurer@ximian.com>
+
+ * statement.cs (Block.ThisVariable): remove the recursion here, to
+ make the --profile more sane.
+
+2004-12-17 Carlos Cortez <calberto.cortez@gmail.com>
+
+ * driver.cs: Patch to handle a xsp bug that prevents to reference an .exe
+ assembly, by JB Evain.
+
+2004-12-17 Raja R Harinath <rharinath@novell.com>
+
+ * class.cs, decl.cs, ecore.cs, iterators.cs, pending.cs,
+ rootcontext.cs, typemanager.cs: Make nomenclature consistent.
+ "parent" refers to enclosing type/class. "base" refers to superclass.
+
+2004-12-17 Raja R Harinath <rharinath@novell.com>
+
+ * codegen.cs (CommonAssemblyModulClass.GetClsCompliantAttribute):
+ Ensure that we only have GlobalAttributes.
+ * attribute.cs (Attribute.Emit): Make non-virtual.
+ (GlobalAttribute.Emit): Remove.
+ (Attribute.Resolve): Make virtual.
+ (GlobalAttribute.Resolve): New. Set Rootcontext.Tree.Types.NamespaceEntry.
+ (Attribute.GetConditionalAttributeValue): Take an EmitContext as
+ the argument. Don't create one.
+ (Attribute.GetObsoleteAttribute): Likewise.
+ (Attribute.GetClsCompliantAttributeValue): Likewise.
+ * class.cs, decl.cs: Update to changes.
+
+2004-12-17 Marek Safar <marek.safar@seznam.cz>
+
+ * delegate.cs (NewDelegate.DoResolve): Add error 149 report.
+
+ * ecore.cs (Expression.MemberLookupFailed): Fixed error 143.
+
+ * statement.cs (Foreach.Resolve): Add error 186 report.
+
+2004-12-16 Marek Safar <marek.safar@seznam.cz>
+
+ * expression.cs (Conditional.DoResolve): Add warning 429.
+
+ * statement.cs (If.Resolve): Add warning 665.
+
+2004-12-16 Raja R Harinath <rharinath@novell.com>
+
+ New invariant: RootContext.Tree.Types.NamespaceEntry == null
+ except when in the parser, and in GlobalAttribute.
+ * driver.cs (MainDriver): Reset RootContext.Tree.Types.NamespaceEntry.
+ * attribute.cs (GlobalAttribute.CheckAttributeType): Reset
+ RootContext.Tree.Types.NamespaceEntry once work is done.
+ (GlobalAttribute.Emit): New. Wrapper for Attribute.Emit, but sets
+ and resets RootContext.Tree.Types.NamespaceEntry.
+
+2004-12-15 Marek Safar <marek.safar@seznam.cz>
+
+ * cs-parser.jay: Don't create a block for every variable.
+
+2004-12-14 Miguel de Icaza <miguel@ximian.com>
+
+ * location.cs: Provide extra information.
+
+ * statement.cs: The instance is not `ldarg_0.THIS' when accessing
+ variables from the captured environment, it is the ldarg_0.
+
+2004-12-14 Marek Safar <marek.safar@seznam.cz>
+
+ * cs-parser.jay: Changed warning level for 642 to 4 until Miguel
+ find a conclusion.
+
+ * class.cs: Changed warning level for 169 to avoid developer
+ displeasure from warning flooding. It will be changed back when they
+ fix most of current BCL warnings.
+
+ * RootContext.cs: Pushed default WarningLevel to 3.
+
+ * statement.cs: Removed unused variable.
+
+2004-12-14 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (TypeContainer.GetClassBases): Add error 1521 report.
+ (TypeContainer.MethodModifiersValid): Refactored to use MemberCore.
+ Add error 502 report.
+ (StaticClass.DefineType): Add error 441 report.
+ (Class.AllowedModifiersProp): New virtual property as temporary
+ extension to AllowedModifiers.
+ (Class.DefineType): Add error 418 report. Moved ModFlags check here
+ to share implementation with StaticClass and don't call virtual
+ methods from ctor.
+
+ * driver.cs (MainDriver): Add error 1558 test.
+
+ * parameter.cs (Parameter.ApplyAttributeBuilder): Add error 662
+ report. Moved error 36 test here.
+
+ * statement.cs (Throw.Resolve): Add error 724 report.
+
+ * typemanager.cs: Add out_attribute_type core type.
+
+2004-12-13 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (TypeContainer.VerifyClsCompliance): Add error
+ 3018 report.
+ (PropertyBase.VerifyClsCompliance): Add errror 3025 report.
+
+ * codegen.cs (ModuleClass.ApplyAttributeBuilder): Add error
+ 3017 report.
+
+ * decl.cs (MemberCore.VerifyClsCompliance): Add warning 3021.
+
+ * parameter.cs (ReturnParameter.ApplyAttributeBuilder):
+ Add error 3023 report.
+ (Parameter.ApplyAttributeBuilder): Add error 3022 report.
+
+ * tree.cs (RootTypes.IsClsCompliaceRequired): Add fake
+ implementation.
+
+2004-12-12 John Luke <john.luke@gmail.com>
+
+ * driver.cs (AddArgs): take -- into account when
+ adding arguments, fixes bug 65710
+
+2004-12-12 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (Unary.TryReduceNegative): Added support for
+ SByteConstant and ByteConstant.
+ (Unary.Reduce): Check error values from TryReduceNegative().
+
+2004-12-10 Marek Safar <marek.safar@seznam.cz>
+
+ * attributes.cs (Attribute.Resolve): Avoid multiple error report
+ and report exception as error 182.
+
+2004-12-10 Raja R Harinath <rharinath@novell.com>
+
+ * driver.cs (Main): Fix message when there are warnings.
+
+2004-12-09 Miguel de Icaza <miguel@ximian.com>
+
+ * delegate.cs: Fixed my fix from yesterday, sorry about that.
+
+2004-12-09 Marek Safar <marek.safar@seznam.cz>
+
+ * anonymous.cs, class.cs, convert.cs, doc.cs, support.cs:
+ Reduced number of warnings.
+
+ * class.cs (TypeContainer.VerifyClsCompliance): One if is enough.
+
+2004-12-08 Miguel de Icaza <miguel@ximian.com>
+
+ * driver.cs: Removed message.
+
+ * delegate.cs: Fix bug introduced in 1.1.x: 70219.
+
+2004-12-08 <vargaz@freemail.hu>
+
+ * cs-tokenizer.cs: Add workaround for NET 2.0 beta 1 csc bug.
+
+2004-12-08 Martin Baulig <martin@ximian.com>
+
+ * class.cs (TypeContainer.VerifyClsCompliance): Report a CS3003
+ instead of a CS3002 for properties and indexer.
+
+2004-12-08 Martin Baulig <martin@ximian.com>
+
+ * decl.cs (MemberName.ToString): Make this work again.
+
+2004-12-08 Marek Safar <marek.safar@seznam.cz>
+
+ * attribute.cs (Resolve): Add error 591 detection.
+
+ * class.cs (FieldMember.Define): Add error 1547 detection.
+ (Indexer.Define): Add error 620 detection.
+ (Operator.Define): Add error 590 detection.
+
+ * ecore.cs: Missing argument for error 79.
+
+ * expression.cs (ComposedCast.DoResolveAsTypeStep): Add error 611
+ detection.
+
+2004-12-07 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #70106
+ * assign.cs.cs (Assign.DoResolve): Reports error 1648 for value types
+ only.
+
+2004-12-07 Atsushi Enomoto <atsushi@ximian.com>
+
+ * cs-parser.jay : handle doc comments on implicit/explicit operators.
+ Some operator comments were suppressed.
+ * doc.cs : Implicit/explicit operator name in doc comments are like
+ "op_Explicit(type)~returnType", so added suffix handling.
+
+2005-01-21 Alp Toker <alp@atoker.com>
+
+ * cs-parser.jay: destructor_declaration's container is PartialContainer
+ not Class when partial types are used, so use Kind prop instead of 'is'.
+
+2004-12-12 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (Unary.TryReduceNegative): Added support for
+ SByteConstant and ByteConstant.
+ (Unary.Reduce): Check error values from TryReduceNegative().
+
+2004-12-11 Martin Baulig <martin@ximian.com>
+
+ * support.cs (ReflectionParameters.ParameterName): If we have a
+ `gpd', call `ParameterName' on it.
+
+ * parameter.cs (Parameter.GetParameterAttributes): New static method.
+
+ * pending.cs (PendingImplementation.DefineProxy): Call
+ DefineParameter() for all of the MethodBuilder's arguments.
+
+2004-12-09 Martin Baulig <martin@ximian.com>
+
+ * doc.cs (DocUtil): Make this a static class.
+
+2004-12-09 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (Invocation.InferType): Moved the type inference
+ implementation into TypeManager.
+
+ * generics.cs (TypeManager): Moved the type inference
+ implementation here.
+
+2004-12-09 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs (TypeManager): Make this a partial class.
+
+ * generics.cs
+ (TypeManager): Move the generics part of `TypeManager' here.
+
+2004-12-08 Martin Baulig <martin@ximian.com>
+
+ * class.cs (TypeContainer.VerifyClsCompliance): Report a CS3003
+ instead of a CS3002 for properties and indexer. Added CS3024
+ check for generic interfaces.
+
+ * attributes.cs (AttributeTester.AnalyzeTypeCompliance): Generic
+ instances are not CLS-compliant.
+
+2004-12-08 Martin Baulig <martin@ximian.com>
+
+ * cs-parser.jay
+ (void_pointer_expression): New rule for `void*', `void**' etc.
+ (typeof_expression): Add `void_pointer_expression'; fixes #66846.
+
+2004-12-08 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (Invocation.InferType): Removed the hack for
+ MethodCore.MayUnify().
+
+ * typemanager.cs (TypeManager.MayBecomeEqualGenericTypes): Make
+ this actually work.
+
+ * class.cs (MethodCore.MayUnify): Use
+ TypeManager.MayBecomeEqualGenericTypes().
+
+2004-12-08 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (Is.DoResolve, As.DoResolve): If we're a type
+ parameter, box it. Fixes #69233.
+
+2004-12-08 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (ConstructedType.CheckConstraints): Valuetypes always
+ have the ctor constraint. Fixes #68326.
+
+2004-12-07 Atsushi Enomoto <atsushi@ximian.com>
+
+ * cs-parser.jay : interface comment was not consumed because of
+ extra opt_semicolon before doc handling.
+
+2004-12-03 Raja R Harinath <rharinath@novell.com>
+
+ Fix test-327.cs, test-328.cs, and put in early infrastructure
+ for eventually fixing #52697.
+ * namespace.cs (NamespaceEntry.LookupForUsing): New method.
+ (NamespaceEntry.LookupNamespaceOrType): New method, refactored
+ from other methods.
+ (NamespaceEntry.Lookup): Remove 'ignore_using' flag.
+ (AliasEntry.Resolve, UsingEntry.Resolve): Use 'LookupForUsing'.
+ (VerifyUsing, error246): Update.
+ * rootcontext.cs (RootContext.NamespaceLookup): Just use
+ 'NamespaceEntry.LookupNamespaceOrType'.
+
+2004-12-07 Martin Baulig <martin@ximian.com>
+
+ * driver.cs: Call it "BETA SOFTWARE" :-)
+
+2004-12-06 Raja R Harinath <rharinath@novell.com>
+
+ Fix crash on cs0657-17.cs.
+ * codegen.cs (CommonAssemblyModulClass.GetClsCompliantAttribute):
+ Use RootContext.Tree.Types, not 'new RootTypes ()'.
+ * attribute.cs (GlobalAttribute.CheckAttributeType): Narrow down
+ the case where the NamespaceEntry gets overwritten.
+
+2004-12-06 Marek Safar <marek.safar@seznam.cz>
+
+ Fixed #69195, #56821
+ * ecore.cs (ResolveBoolean): Tiny refactoring.
+
+ * expression.cs (Binary.DoResolve): Add warning 429 and skipping
+ of right expression resolving when left is false constant and
+ operator is LogicalAnd OR true constant and operator is LogicalOr.
+
+ * statement.cs (ResolveUnreachable): Always reports warning.
+
+2004-12-05 Miguel de Icaza <miguel@ximian.com>
+
+ * class.cs: Distinguish between 1721 and 1722 (just a little help
+ for the programmer).
+
+2004-12-03 Miguel de Icaza <miguel@ximian.com>
+
+ * delegate.cs: Only allow this on new versions of the language.
+
+2004-12-02 Duncan Mak <duncan@ximian.com>
+
+ * ecore.cs (PropertyExpr.IsAccessorAccessible): Moved to
+ Expression class.
+ (Expression.IsAccessorAccessible): Moved from the PropertyExpr to
+ here as a static method. Take an additional bool out parameter
+ `must_do_cs1540_check' for signaling to InstanceResolve.
+ (PropertyExpr.InstanceResolve): Removed the `must_do_cs1540_check'
+ member field from PropertyExpr class and made it an argument of
+ the method instead.
+ (EventExpr.InstanceResolve): Copied from PropertyExpr, removed the
+ check for MarshalByRefObject, and report CS0122 instead of CS1540.
+ (EventExpr.DoResolve): Call IsAccessorAccessible on `add_accessor'
+ and `remove_accessor' as well as InstanceResolve: report CS0122
+ where applicable.
+
+ Fixes #70129.
+
+2004-12-07 Martin Baulig <martin@ximian.com>
+
+ * decl.cs (DeclSpace.AddToContainer): Report correct errors CS0694
+ and CS0692 where appropriate.
+
+2004-12-06 Martin Baulig <martin@ximian.com>
+
+ * class.cs (MethodCore.MayUnify): Moved the CS0408 check here from
+ IsDuplicateImplementation() and improved it.
+
+ * expression.cs (Invocation.InferTypeArguments): Added
+ `Type[] inferred_class_types' argument (for MethodCore.MayUnify)
+ and removed the "ref" modifier from `infered_types'.
+
+ * decl.cs (MemberName.ToString): Removed the exception.
+
+2004-12-03 Atsushi Enomoto <atsushi@ximian.com>
+
+ * cs-tokenizer.cs : Only '////' is rejected. Other non-whitespace
+ comments are allowed.
+
+2004-12-03 Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+ * delegate.cs: Add checks for subtypes in paramaters and return values
+ in VerifyMethod () to add support for Covariance/Contravariance
+ in delegates.
+
+2004-12-02 Miguel de Icaza <miguel@ximian.com>
+
+ * report.cs: Remove extra closing parenthesis.
+
+ * convert.cs (Error_CannotImplicitConversion): If the name of the
+ types are the same, provide some extra information.
+
+2004-12-02 Marek Safar <marek.safar@seznam.cz>
+
+ Fix bug #70102
+ * attribute.cs (Resolve): Improved implementation of params
+ attribute arguments.
+
+ * support.cs (ParameterData): Add HasParams to be faster.
+
+2004-12-02 Atsushi Enomoto <atsushi@ximian.com>
+
+ all things are for /doc support:
+
+ * doc.cs: new file that supports XML documentation generation.
+ * mcs.exe.sources: added doc.cs.
+ * driver.cs:
+ Handle /doc command line option.
+ Report error 2006 instead of 5 for missing file name for /doc.
+ Generate XML documentation when required, after type resolution.
+ * cs-tokenizer.cs:
+ Added support for picking up documentation (/// and /** ... */),
+ including a new XmlCommentState enumeration.
+ * cs-parser.jay:
+ Added lines to fill Documentation element for field, constant,
+ property, indexer, method, constructor, destructor, operator, event
+ and class, struct, interface, delegate, enum.
+ Added lines to warn incorrect comment.
+ * rootcontext.cs :
+ Added Documentation field (passed only when /doc was specified).
+ * decl.cs:
+ Added DocComment, DocCommentHeader, GenerateDocComment() and
+ OnGenerateDocComment() and some supporting private members for
+ /doc feature to MemberCore.
+ * class.cs:
+ Added GenerateDocComment() on TypeContainer, MethodCore and Operator.
+ * delegate.cs:
+ Added overriden DocCommentHeader.
+ * enum.cs:
+ Added overriden DocCommentHeader and GenerateDocComment().
+
+2004-12-01 Miguel de Icaza <miguel@ximian.com>
+
+ * cfold.cs (ConstantFold.DoConstantNumericPromotions): After
+ unwrapping the enumeration values, chain to
+ DoConstantNumericPromotions again, so we can promote things to the
+ fundamental types (takes care of enums that are bytes, sbytes).
+
+ Fixes bug #62054.
+
+2004-12-01 Raja R Harinath <rharinath@novell.com>
+
+ * attribute.cs (Attribute.CheckAttributeType): Remove complain flag.
+ Fix long-standing bug in type-lookup. Use FindType instead of
+ LookupType when ec.ResolvingTypeTree.
+ (Attribute.ResolveType, Attribute.Resolve)
+ (Attribute.DefinePInvokeMethod,GlobalAttribute.CheckAttributeType):
+ Update to changes.
+ (Attributes.Search): Remove internal version. Update.
+ (Attributes.SearchMulti): Update.
+ (Attributes.GetClsCompliantAttribute): Remove.
+ (Attributes.GetIndexerNameAttribute): Remove.
+ * decl.cs (MemberCore.GetClsCompliantAttributeValue): Update to changes.
+ (DeclSpace.GetClsCompliantAttributeValue): Likewise.
+ * class.cs (Indexer.Define): Likewise.
+
+2004-12-01 Marek Safar <marek.safar@seznam.cz>
+
+ Fix bug #68790
+ * ecore.cs: CheckMarshallByRefAccess new virtual method for testing
+ MarshallByReference members access.
+
+ * expression.cs: Use CheckMarshallByRefAccess;
+ Better error CS0197 message.
+
+ * report.cs: Print whole related error message.
+
+2004-11-29 Marek Safar <marek.safar@seznam.cz>
+
+ * class (GetClassBases): Better error 60 report.
+ (EventProperty): Disabled warning 67 detection.
+
+2004-11-29 Marek Safar <marek.safar@seznam.cz>
+
+ Fix bug #60324
+ * cfold.cs (Assign.DoResolve): Add subtraction for DecimalConstant.
+
+ * constant.cs (DecimalConstant.Emit): Don't use int ctor for
+ precise values.
+
+2004-11-29 Marek Safar <marek.safar@seznam.cz>
+
+ Fix bug #49488
+ * assign.cs (Assign.DoResolve): Add error 1648, 1650 report.
+
+ * decl.cs (MemberCore.MemberName): Error 1648 in compiler.
+
+2004-11-26 Miguel de Icaza <miguel@ximian.com>
+
+ * attribute.cs (Attribute.Resolve): Refine error reporting and
+ report a cs0117 if the identifier does not exist, to distinguish
+ from 0617 which is a miss-use of the actual identifier.
+
+ * ecore.cs (EventExpr.Emit): Refine error report and distinguish
+ between cs0070 and cs0079.
+
+ * class.cs (MemberBase.DoDefine): When reporting a wrong
+ accessibility level, we use MethodCore to compare instead of
+ Method (this was a regression in some refactoring effort).
+
+ So now we correctly report cs0056 again.
+
+ * convert.cs (ImplicitReferenceConversion): Corrected typo, I was
+ testing the target_type (which was known to be object_type) and
+ not the source type (which is anonymous_method).
+
+ Fixed reporting of error cs1660.
+
+ * expression.cs (UserCast.Source): Expose the underlying cast.
+
+ * statement.cs (Switch.SwitchGoverningType): Sort the list of
+ allowed types to find a match to int32 first (most common).
+
+ In addition, it ignores any ImplicitUserConversions that did an
+ internal implicit conversion (as the switch statement allows only
+ one integral conversion to exist).
+
+ * class.cs (PartialContainer.Create): rename `name' to
+ `member_name' for clarity. Then replace the string calls with a
+ call to MemberName.GetPartialName, as now using
+ MemberName.ToString is an error (this is due to the side effects
+ it had, that were fixed in the past).
+
+ This will restore the error reporting on a number of partial class
+ errors that were missusing this (and getting an exception as a
+ results, which is now just a plain textual warning, because
+ yyparse debug output would crash otherwise).
+
+2004-11-26 Raja R Harinath <rharinath@novell.com>
+
+ * Makefile (PROGRAM_INSTALL_DIR): Remove.
+
+2004-11-25 Ben Maurer <bmaurer@ximian.com>
+
+ * rootcontext.cs (LookupType): Make sure to cache lookups that
+ don't give us a negative result. This saves about 5% of corlib
+ compilation time.
+
+2004-11-25 Miguel de Icaza <miguel@ximian.com>
+
+ * report.cs (AbstractMessage.Print): messages are sent to stderr
+
+ * class.cs (TypeContainer.GetClassBases): It is an error to have a
+ non-interface in the list of interfaces (at this point, either
+ parent was properly set, or a base class is being listed in the
+ interfaces section).
+
+ This flags error 1722, and resolves the crash from bug 69259.
+
+2004-11-25 Ben Maurer <bmaurer@ximian.com>
+
+ * statement.cs (Using.EmitExpressionFinally): make this work right
+ for valuetypes. Fixes 69926.
+
+2004-11-25 Miguel de Icaza <miguel@ximian.com>
+
+ * const.cs (Const.ChangeType): Cope with the "0 literal can be
+ converted to an enum" here, before we try to change the underlying
+ type. This code exists, but it is a different code path than the
+ one used while encoding constants.
+
+ (ImplicitReferenceConversionExists): In addition, resynchronized
+ the code here, so it matches the same code in
+ ImplicitReferenceConversionExists for the `from any class-type S
+ to any interface-type T'.
+
+2004-11-25 Marek Safar <marek.safar@seznam.cz>
+
+ * cfold.cs (BinaryFold): Add addition for DecimalConstant.
+
+2004-11-24 Miguel de Icaza <miguel@ximian.com>
+
+ * cs-parser.jay: Use verbosity accordingly.
+
+2004-11-24 Marek Safar <marek.safar@seznam.cz>
+
+ * expression.cs (Unary.ResolveOperator): Do not report warning;
+ AddressOf reads from variable.
+
+ (LocalVariableReferences.DoResolveBase): Improved my previous fix.
+
+2004-11-24 Marek Safar <marek.safar@seznam.cz>
+
+ Fix bug #69462
+
+ * attribute.cs (Attributable): Removed CheckTargets.
+ (Attributes.Emit): Explicit attribute targets are tested here.
+
+ * class.cs (EventField.ValidAttributeTargets): Explicit target "field" is
+ not enabled for interfaces.
+
+ * codegen.cs (CommonAssemblyModulClass.AddAttributes): Removed CheckTargets.
+ (GetAssemblyName): Ouch next bug there.
+
+2004-11-23 Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+ * expression.cs: Error 275 added.
+
+2004-11-23 Marek Safar <marek.safar@seznam.cz>
+
+ Fix bug #69177 (Implemented decimal constant support)
+
+ * cfold.cs (DoConstantNumericPromotions: Add DecimalConstant.
+ (BinaryFold): Add DecimalConstant.
+
+ * const.cs (Define): Decimal constant
+ (is not constant.
+ (ChangeType): Add decimal type handling.
+ (LookupConstantValue): Don't set value for decimal type but
+ emit DecimalConstantAttribute. Needed for constant optimization.
+
+ * constant.cs (ToDecimal): New method.
+ (ConvertToDecimal): New method.
+ (IntConstant): Implemented ConvertToDecimal.
+ (DecimalConstant.Emit): Emit optimized version for decimals in
+ int range.
+
+ * expression.cs (ResolveOperator): Changed order of constant
+ reduction to work correctly with native types which have
+ overloaded operators.
+ (ResolveMemberAccess): Extract constant value from attribute
+ for decimal type.
+
+ * rootcontext.cs (ResolveCore): Add DecimalConstantAttribute.
+
+ * typemanager.cs (TypeManager): Add decimal_constant_attribute_type,
+ void_decimal_ctor_int_arg, decimal_constant_attribute_ctor.
+ (ChangeType): Decimal is special.
+ (TypeToCoreType): Add decimal type.
+
+2004-11-22 Marek Safar <marek.safar@seznam.cz>
+
+ * convert.cs (ImplicitConversionRequired): Add error cs0642 for
+ decimal types.
+
+2004-11-22 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (EventField.ApplyAttributeBuilder): Fix error
+ test cs1667-5.cs.
+
+2004-11-19 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (MemberBase.DoDefine): Fix error cs0508 report.
+
+ * pending.cs (PendingImplementation): Grab only interfaces.
+
+2004-11-19 Marek Safar <marek.safar@seznam.cz>
+
+ * statement.cs (ForeachHelperMethods): Add location member and
+ error 202 detection.
+
+2004-11-18 Marek Safar <marek.safar@seznam.cz>
+
+ * expression.cs (DoResolveBase): Fixed wrong warning for out
+ variables.
+
+2004-12-04 Martin Baulig <martin@ximian.com>
+
+ * convert.cs (Convert.TypeParameter_to_Null): Use the constraints
+ to check whether the conversion is ok.
+
+ * typemanager.cs (TypeManager.GetTypeArguments): Just return
+ `Type.EmptyTypes' if we're not a generic TypeContainer.
+
+2004-11-25 Miguel de Icaza <miguel@ximian.com>
+
+ * convert.cs (ImplicitReferenceConversionExists): A surprisingly
+ old bug: when converting from the null literal to a pointer,
+ return an EmptyCast, not the NullLiteral.
+
+ This fixes #69921, the recent null_type changes probably made this
+ bug more prominent.
+
+2004-12-03 Martin Baulig <martin@ximian.com>
+
+ * delegate.cs (NewDelegate.DoResolve): If we have an anonymous
+ method as our child, call AnonymousMethod.Compatible() on it.
+
+2004-12-02 Miguel de Icaza <miguel@ximian.com>
+
+ * class.cs (FieldBase): Use an unused bit field from the field to
+ encode the `has_offset' property from the FieldMember. This saves
+ a couple of Ks on bootstrap compilation.
+
+ * delegate.cs (NewDelegate.DoResolve): If we have an anonymous
+ method as our child, return the AnonymousMethod resolved
+ expression.
+
+ * expression.cs (New.DoResolve): Allow return values from
+ NewDelegate to also include AnonymousMethods.
+
+ Fixes #70150.
+
+2004-11-29 Raja R Harinath <rharinath@novell.com>
+
+ * decl.cs (MemberCore.MemberName): Remove readonly to fix an error
+ cs1648 report.
+ * rootcontext.cs (ResolveCore::interfaces_first_stage): Add
+ System.Runtime.InteropServices._Exception, since it's a base
+ interface of the core type System.Exception in the net_2_0 profile.
+
+2004-11-27 Martin Baulig <martin@ximian.com>
+
+ * ecore.cs (Expression.StoreFromPtr): Use `stobj' for generic parameters.
+
+2004-11-26 Raja R Harinath <rharinath@novell.com>
+
+ * Makefile: Convert to use executable.make.
+ * gmcs.exe.sources: New.
+
+2004-11-25 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (Invocation.InferType): Added support for byref types.
+
+2004-11-25 Martin Baulig <martin@ximian.com>
+
+ * statement.cs (Foreach.FetchMethodMoveNext): Wrap `mi.ReturnType'
+ in TypeManager.TypeToCoreType().
+
+2004-11-25 Martin Baulig <martin@ximian.com>
+
+ * iterators.cs (Iterator.DoDefineMembers): Override and lookup the
+ "Dispose" method from the `current_type'.
+ (Iterator.EmitMoveNext): Use the `dispose_method' we looked up in
+ DoDefineMembers() instead of using the MethodBuilder; this is
+ required for generic iterators.
+
+ * class.cs (TypeContainer.DoDefineMembers): Make this virtual.
+
+2004-11-24 Martin Baulig <martin@ximian.com>
+
+ * ecore.cs (Expression.LoadFromPtr): Use `ldobj' for generic parameters.
+
+2004-11-20 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (Invocation.InferType): Correctly infer generic
+ instances; see gen-103.cs.
+ (Invocation.InferTypeArguments): If a generic method doesn't have
+ any unbound type parameters, we don't need to infer anything.
+
+2004-11-19 Raja R Harinath <rharinath@novell.com>
+
+ * Makefile (gmcs.exe): Update to new location of bootstrap mcs.exe.
+
+2004-11-17 Raja R Harinath <rharinath@novell.com>
+
+ * typemanager.cs (TypeHandle.GetTypeHandle): Make private.
+ (TypeHandle.GetMemberCache): New.
+ (TypeHandle.TypeHandle): Update.
+ (TypeManager.LookupMemberCache): Rewritten from LookupMemberContainer.
+ (TypeManager.LookupParentInterfacesCache):
+ Rename from LookupInterfaceCache. Optimize slightly.
+ (TypeManager.MemberLookup_FindMembers): Update.
+ * decl.cs (MemberCache.MemberCache): Set Container to null in the
+ multi-type variant.
+ (AddCacheContents): Rename from AddHashtable.
+ * class.cs (TypeContainer.parent_container): Remove.
+ (TypeContainer.VerifyClsCompliance): Don't use parent_container.
+ (TypeContainer.DoDefineMembers): Don't initialize it.
+ Update to name changes.
+
+2004-11-17 Miguel de Icaza <miguel@ximian.com>
+
+ * class.cs (MethodCore.CheckAccessModifiers): New helper routine
+ that factors the code to check access modifiers on override.
+
+ (PropertyBase): Use the code here.
+
+ Patch from Lluis S'anchez, fixes bug #69361.
+
+2004-11-15 Miguel de Icaza <miguel@ximian.com>
+
+ * anonymous.cs (AnonymousMethod.Error_AddressOfCapturedVar): New
+ routine that is used to report the use of a captured variable
+ whose address has been taken.
+
+ There are two checks: one when variables are being captured and
+ the other check is when the address of a variable is taken.
+
+ (because an anonymous methods might be resolved before *or* after
+ the address has been taken) and
+
+ * expression.cs (Conditional.DoResolve): Remove the special
+ casing that Martin added to trueExpr and falseExpr being both
+ NullLiteral. We get the right behavior now just by introducing
+ the null_type into the compiler.
+
+ * convert.cs (ExplicitConversion): Change the code to use
+ null_type instead of testing `expr is NullLiteral'.
+ (ImplicitConversionStandard): use null_type too.
+ (ImplicitReferenceConversionExists): use null_type too.
+ (ImplicitReferenceConversion): use null_type too.
+
+ * literal.cs: The type of `NullLiteral' is now null_type instead
+ of object_type.
+ (Resolve): Set the type here.
+
+ * typemanager.cs: Introduce null_type.
+
+2004-11-18 Martin Baulig <martin@ximian.com>
+
+ * rootcontext.cs
+ (RootContext.LookupType): Return a `Type', not a `TypeExpr'.
+
+2004-11-18 Martin Baulig <martin@ximian.com>
+
+ * ecore.cs (TypeExpr.DoResolveAsTypeStep): Make this protected.
+
+2004-11-18 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (Constraints.Resolve): Take an `EmitContext' instead
+ of a `DeclSpace'. If one of our constraints is a `ConstructedType',
+ call ResolveConstructedType() on it to resolve it without checking
+ constraints.
+ (Constraints.ResolveTypes): Check them here.
+ (ConstructedType.DoResolveAsTypeStep): Fully resolve ourselves,
+ but don't check constraints.
+ (ConstructedType.ResolveAsTypeTerminal): Override this and also
+ check constraints here.
+ (ConstructedType.ResolveConstructedType): New public method. This
+ is called from DoResolveAsTypeStep() and Constraints.Resolve() to
+ resolve ourselves without checking constraints.
+
+ * ecore.cs (Expression.ResolveAsTypeTerminal): Make this virtual.
+
+2004-11-18 Martin Baulig <martin@ximian.com>
+
+ * decl.cs
+ (DeclSpace.CurrentType): Changed type from `TypeExpr' to `Type'.
+
+ * delegate.cs (Delegate.DefineType): Always create the EmitContext.
+
2004-11-18 Martin Baulig <martin@ximian.com>
* ecore.cs (TypeExpr.ResolveType): Removed.