X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fgmcs%2FChangeLog;h=51d9d4e721230462339bb8b07bd637ecf98836af;hb=e29358295387e3a8af479a0ee74eca88896dc5dd;hp=597dd8e9f420febac27a0e27d75145be0c763008;hpb=1ca3bc2c6f3a7b105a7c3ed8641a465736716a79;p=mono.git diff --git a/mcs/gmcs/ChangeLog b/mcs/gmcs/ChangeLog index 597dd8e9f42..51d9d4e7212 100644 --- a/mcs/gmcs/ChangeLog +++ b/mcs/gmcs/ChangeLog @@ -1,3 +1,1226 @@ +2005-03-22 Martin Baulig + + * delegate.cs (Delegate.VerifyMethod): Call + TypeManager.GetParameterData() after method inference, not before. + +2005-02-25 Marek Safar + + * 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 + + Fix #72924. + * statement.cs (ExpressionStatement.Resolve): Make robust to being + called twice in case of error. + +2005-02-23 Chris Toshok + + 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 + + * 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 + Abin Thomas + Anoob V E + Harilal P R + + 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 + Anoob V E + Harilal P R + + Fix #71134. + * pending.cs (PendingImplementation.GetAbstractMethods): + Find NonPublic members too. + +2005-02-22 Marek Safar + + * expression.cs.cs (ConditionalLogicalOperator.DoResolve): + Fixed error 217. + + * class.cs (MethodCore.CheckMethodAgainstBase): + Add error 239 report. + +2005-02-21 Raja R Harinath + + 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 + + * ecore.cs (PropertyExpr.DoResolve): Add error 214 report. + + * class.cs (Operator.Define): Add error 217 report. + +2005-02-21 Raja R Harinath + + * namespace.cs (UsingEntry.Resolve): Undo change below. + +2005-02-21 Raja R Harinath + + 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 + + Fix #72732. + * attribute.cs (Attribute.ResolveType): If a 'resolve_error' had + occured previously, don't resolve again. + +2005-02-21 Marek Safar + + 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 + + * 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 + + 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 + + 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 + + * attribute.cs (Attribute.Resolve): Add arguments casting for + when types doesn't match ctor arguments. + +2005-02-16 Raja R Harinath + + 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 + + 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 + + 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 + + * 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 + + * 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 + + * 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 + + 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 + + * 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 + + * 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 + + 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 + + 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 + + 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) + Anoob V.E (NOSIP) + Harilal P.R (NOSIP) + + 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 + + * driver.cs: remove duplicate -doc line in Usage () + +2005-02-04 Raja R Harinath + + * location.cs (Location.AddFile): Fix CS2002 error report. + +2005-02-02 Martin Baulig + + * 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 + + 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 + + * const.cs (LookupConstantValue): Check that `ce' is not null + before calling GetValue (). + +2005-02-01 Raja R Harinath + + 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 + + * 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 + + 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 + + * 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 + + * 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 + + 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 + + * 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 + + * class.cs (TypeContainer.AttributeTargets): Return the correct + AttributeTargets depending on our `Kind' instead of throwing an + exception; fixes #71632. + +2005-01-26 Marek Safar + + Fix #71257 + * expression.cs (MemberAccess.ResolveMemberAccess): Add CS0176 test for + constant members. + +2005-03-17 Martin Baulig + + * anonymous.cs (AnonymousMethod.method_modifiers): Change default + from `Modifiers.INTERNAL' to `Modifiers.PRIVATE'. Fixes #73260. + +2005-03-17 Martin Baulig + + * 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 + + * generic.cs (TypeMananager.IsIEnumerable): New public method. + + * convert.cs (Convert.ImplicitReferenceConversion(Exists)): Allow + converting from an array-type of T to `IEnumerable'. + +2005-03-16 Martin Baulig + + * 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 + + * generic.cs (Nullable.NullCoalescingOperator): Implemented. + +2005-03-14 Martin Baulig + + * generic.cs (Nullable.LiftedBinaryOperator): Added support for + the comparision operators `<', `>', `<=' and `>='. + +2005-03-13 Martin Baulig + + * generic.cs + (Nullable.NullLiteral): Renamed to `Nullable.NullableLiteral' to + avoid confusion with the `NullLiteral'. + (Nullable.LiftedBinaryOperator): Correctly implement `==' and '!='. + +2005-03-13 Martin Baulig + + * expression.cs (Binary.ResolveOperator): For `==' and `!=', allow + comparing arbitrary types with the null literal. + +2005-03-13 Martin Baulig + + * 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 + + * expression.cs + (ArrayAccess.EmitDynamicInitializers): Use `etype.IsValueType' + rather than `etype.IsSubclassOf (TypeManager.value_type)'. + +2005-03-07 Martin Baulig + + * 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 + + * 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 + + * 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 + + 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 + + * 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 + + * class.cs (TypeContainer.DoDefineMembers): We also need a default + static constructor in static classes. + +2005-03-02 Martin Baulig + + * 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 + + * 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 + + * 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 + + 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 + + * README, README.Changes: Removed; they're old and obsolete. + +2005-02-22 Martin Baulig + + * 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 + + * 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 + + * 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 + + * generic.cs (ConstructedType.Constraints): Correctly check + constraints if the argument type is a type parameter; fixes + #72326. + +2005-02-02 Martin Baulig + + * 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 + + * 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 + + * 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 + + * class.cs (TypeContainer.AttributeTargets): Return the correct + AttributeTargets depending on our `Kind' instead of throwing an + exception; fixes #71632. + +2005-01-26 Martin Baulig + + * delegate.cs (Delegate.DefineType): Correctly define our type + parameters. Fixes #71483. + +2005-01-25 Raja R Harinath + + 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 + + Fix #71651, #71675 + * attribute.cs (ExtractSecurityPermissionSet): Catch exceptions from + CreatePermission. + Create custom PermissionSet only for PermissionSetAttribute. + +2005-01-24 Marek Safar + + Fix #71649 + * class.cs (StaticClass.DefineContainerMembers): Enable enums and + delegates in static class. + +2005-01-24 Martin Baulig + + * 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 + + * 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 + + * cs-parser.jay: Improve error reporting when an interface + declares new types. + +2005-01-20 Dick Porter + + * 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 + + * cs-parser.jay (catch_clause): Simplify current_block handling + somewhat. + +2005-01-17 Miguel de Icaza + + * 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 + + * 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 + + * 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 + + 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 + + * cs-tokenizer.cs (xtoken): Reset 'comments_seen' in a couple more + places. + +2005-01-12 Raja R Harinath + + 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 + + * doc.cs + (DocUtil.emptyParamList): Removed; use `Type.EmptyTypes' instead. + +2005-01-12 Marek Safar + + Fix #70749 + * attribute.cs (ExtractSecurityPermissionSet): Don't report error + for non-CAS & merge permission sets properly. + +2005-01-11 Raja R Harinath + + 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 + + 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 + + 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 + + Fix #70722 + * class.cs (MethodCore.CheckBase): Test base method obsoleteness + only for overrides. + +2005-01-08 Miguel de Icaza + + * attribute.cs: Check for null and empty strings. + + I have lost another battle to Paolo. + +2005-01-07 Marek Safar + + 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 + + * 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 + + * doc.cs : When searching for a type, find nested type too. + This fixes bug #71040. + +2005-01-06 Atsushi Enomoto + + * 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 + + * 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 + + 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 + + * 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 + + * anonymous.cs: Ensure that we init the scope of our parent if it + has not been initialized yet. + +2004-12-30 Duncan Mak + + * 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 + + * 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 + + * statement.cs (Block.ThisVariable): remove the recursion here, to + make the --profile more sane. + +2004-12-17 Carlos Cortez + + * driver.cs: Patch to handle a xsp bug that prevents to reference an .exe + assembly, by JB Evain. + +2004-12-17 Raja R Harinath + + * 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 + + * 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 + + * 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 + + * expression.cs (Conditional.DoResolve): Add warning 429. + + * statement.cs (If.Resolve): Add warning 665. + +2004-12-16 Raja R Harinath + + 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 + + * cs-parser.jay: Don't create a block for every variable. + +2004-12-14 Miguel de Icaza + + * 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 + + * 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 + + * 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 + + * 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 + + * driver.cs (AddArgs): take -- into account when + adding arguments, fixes bug 65710 + +2004-12-12 Martin Baulig + + * expression.cs (Unary.TryReduceNegative): Added support for + SByteConstant and ByteConstant. + (Unary.Reduce): Check error values from TryReduceNegative(). + +2004-12-10 Marek Safar + + * attributes.cs (Attribute.Resolve): Avoid multiple error report + and report exception as error 182. + +2004-12-10 Raja R Harinath + + * driver.cs (Main): Fix message when there are warnings. + +2004-12-09 Miguel de Icaza + + * delegate.cs: Fixed my fix from yesterday, sorry about that. + +2004-12-09 Marek Safar + + * 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 + + * driver.cs: Removed message. + + * delegate.cs: Fix bug introduced in 1.1.x: 70219. + +2004-12-08 + + * cs-tokenizer.cs: Add workaround for NET 2.0 beta 1 csc bug. + +2004-12-08 Martin Baulig + + * class.cs (TypeContainer.VerifyClsCompliance): Report a CS3003 + instead of a CS3002 for properties and indexer. + +2004-12-08 Martin Baulig + + * decl.cs (MemberName.ToString): Make this work again. + +2004-12-08 Marek Safar + + * 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 + + Fix #70106 + * assign.cs.cs (Assign.DoResolve): Reports error 1648 for value types + only. + +2004-12-07 Atsushi Enomoto + + * 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 + + * 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 + + * expression.cs (Unary.TryReduceNegative): Added support for + SByteConstant and ByteConstant. + (Unary.Reduce): Check error values from TryReduceNegative(). + 2004-12-11 Martin Baulig * support.cs (ReflectionParameters.ParameterName): If we have a