2005-08-20 Martin Baulig <martin@ximian.com>
[mono.git] / mcs / mcs / ChangeLog
index 2f4f3b94a2dedea56231805511f2bec691df1573..3ca6b4275663d3d7a6835ee02ffc00fbe19bab83 100644 (file)
@@ -1,5 +1,201 @@
+2005-08-20  Martin Baulig  <martin@ximian.com>
+
+       * anonymous.cs (CaptureContext.CaptureThis): Create the topmost
+       scope if we don't already have it.
+
+       * expression.cs (Invocation.EmitCall): Use `ec.EmitThis ()' rather
+       than `ig.Emit (OpCodes.Ldarg_0)' to make it work inside iterators;
+       fixes #75867.
+
+2005-08-17  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #75803
+       * decl.cs (DeclSpace.VerifyClsCompliance): Skip when collision object
+       is a partial class.
+
+2005-08-16  Marek Safar  <marek.safar@seznam.cz>
+
+       The big constants rewrite
+       Fix #75746, #75685 and more
+       As a side effect saved 1MB for MWF ;-)
+       
+       * attribute.cs (GetAttributeArgumentExpression): Use ToType, GetTypedValue.
+       (GetMarshal, GetMethodImplOptions, GetLayoutKindValue): Values are not
+       enum based for corlib compilation.
+       
+       * cfold.cs (BinaryFold): Convert operand for enum additions. Fixed enum
+       subtractions.
+       
+       * class.cs (FixedField.Define): Use ResolveAsConstant.
+       
+       * const.cs (IConstant): Interface constants and enums.
+       (Const.ResolveValue): New method for constant resolvning.
+       (ExternalConstant): Constants from imported assemblies.
+       
+       * constant.cs (Constant.GetTypedValue): Used to get constant with forced
+       conversion; like enums.
+       (Constant.ToType): Converts this constant to different type.
+       (Constant.Increment): Adds 1.
+       
+       * convert.cs (ImplicitConversionRequired): Simplified.
+       
+       * cs-parser.jay: Create EnumMember directly.
+       
+       * decl.cs (MemberCore.CheckObsoleteness): Checks for ObsoleteAttribute presence.
+       
+       * doc.cs (GenerateEnumDocComment): Removed.
+       
+       * ecore.cs (Expression.ResolveAsConstant): New constant specific method.
+       (ConvertIntLiteral): Removed.
+       (FieldExpr.ResolveMemberAccess): Refactored to remove constant specific if(s).
+       
+       * enum.cs (EnumMember): Implement IConstant.
+       (Enum.IsValidEnumConstant): Removed.
+       (Enum.GetNextDefaultValue): Removed.
+       (Enum.FindMembers): Updated.
+       (Enum.GenerateDocComment): Iterate enum members.
+       
+       * expression.cs (Cast.TryReduce): Handle enums correctly.
+       (New.Constantify): Made public.
+       (MemberAccess.DoResolve): Removed contant specific if(s).
+       
+       * literal.cs (NullLiteral): Implement new abstract methods.
+       
+       * statement.cs (GotoCase.Resolve): Use new constant methods.
+       (SwitchLabel.ResolveAndReduce): Use new constant methods.
+       
+       * typemanager.cs (LookupEnum): Removed.
+       (IsEnumType): Fixed to work with corlib.
+       (RegisterConstant): Removed.
+       (LookupConstant): Removed.
+       (GetConstant): Changed to work with IConstant.
+
+2005-08-04  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * location.cs : Fixed overflown (>255) column number.
+
+2005-08-03  Raja R Harinath  <rharinath@novell.com>
+
+       First cut of the qualified-alias-member feature.
+       * cs-tokenizer.cs (Tokenizer.is_punct): Recognize the double-colon
+       token.
+       * cs-parser.jay (DOUBLE_COLON): New token.
+       (namespace_or_type_name): Add rule for recognizing
+       qualified-alias-members.
+       (primary_expression): Likewise.
+       (element_access): Allow QualifiedAliasMember as a possible
+       type-bearing expression.
+       (local_variable_type, local_variable_pointer_type): Likewise.
+       * namespace.cs (NamespaceEntry.LookupAlias): New.  Looks up
+       aliases in the current and enclosing namespace declarations.
+       (NamespaceEntry.UsingAlias): Add CS0440 warning.
+       * decl.cs (MemberName.is_double_colon): New.
+       (MemberName.MemberName): Add new constructor for alias-member.
+       (MemberName.GetTypeExpression): Generate QualifiedAliasMember too.
+       * expression.cs (QualifiedAliasMember): New expression type.
+
+2005-08-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * location.cs : it borked when no argument was specified.
+
+2005-08-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * location.cs : tiny ToString() format fix.
+
+2005-08-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * statement.cs : oops, it was missing.
+
+2005-08-02  Atsushi Enomoto  <atsushi@ximian.com>
+
+       A set of fixes for precise line/column location.
+
+       * location.cs :
+         "token" field now holds a file/line "delta", a line number offset 
+         from the segment, and a column number. See also:
+         http://lists.ximian.com/pipermail/mono-devel-list/2004-
+         December/009508.html
+         Removed static IsNull. Use instance IsNull property instead.
+       * cs-tokenizer.cs :
+         For some tokens it stores Location. For Identifier it stores
+         LocatedToken which is a pair of string name and location.
+         Column numbers are adjusted only at getChar().
+       * report.cs :
+         Use Location.ToString() for reporting (it now contains column).
+       * cs-parser.jay :
+         Largely modified to use LocatedToken instead of
+         string (IDENTIFIER), and to acquire Location from some tokens.
+       * namespace.cs, decl.cs, ecore.cs, class.cs, delegate.cs,
+         iterators.cs, const.cs, anonymous.cs, tree.cs, enum.cs,
+         codegen.cs :
+         Now MemberName holds Location. DeclSpace.ctor() receives Location
+         as a parameter. Removed extra parameters to all derived classes.
+         Replaced Location.IsNull() with instance property.
+       * assign.cs, expression.cs :
+         Added .ctor() overload that omits Location.
+       * attribute.cs :
+         Added "nameEscaped" flag that indicates the identifier was escaped
+         in the source file. This fixes bug #57047.
+
+2005-08-02  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (AttributeTester.GetImportedIgnoreCaseClsType):
+       New method, looking for lo-case imported cls type.
+
+       * decl.cs (DeclSpace.VerifyClsCompliance): Check CS3005 for types
+       here.
+
+       * driver.cs: Removed VerifyTopLevelNameClsCompliance usage.
+
+       * enum (Enum.VerifyClsCompliance): Hardcode non-compliant types.
+
+       * typemanager.cs (TypeManager.AllClsTopLevelTypes): Renamed from
+       all_imported_types.
+       (TypeManager.LoadAllImportedTypes): Lo-case imported types.
+
+       Optimized to save 3.5 MB for SWF compilation.
+
+2005-08-01  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (AddToTypeContainer): Use inheritance insted of if(s).
+       (PartialContainer.Create): Moved logic AddToContainer.
+       (PartialContainer.MarkForDuplicationCheck): Shares name.
+       
+       * decl.cs (DeclSpace.AddToContainer): Check name collisions at one
+       place.
+       
+       * namespace.cs (Namespace.AddDeclSpace): Lazy declspaces
+       initialization.
+       (Namespace.GetSignatureForError): New method.
+       
+       * tree.cs (Tree.RecordDecl): Moved to AddToContainer.
+       (RootTypes.AddToTypeContainer): se inheritance insted of if(s).
+
+2005-08-01  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #75669.
+       * ecore.cs (Expression.MemberLookupFailed): Use queried_type for
+       member lookup rather than qualifier_type, since qualifier_type can
+       be null.
+
+2005-08-01  Marek Safar  <marek.safar@seznam.cz>
+
+       * enum.cs (Enum.VerifyClsName): Fixed to allow not CLSCompliant
+       enum member.
+
+2005-07-31  Miguel de Icaza  <miguel@novell.com>
+
+       * statement.cs: Copy the local exception into the exception
+       captured local.  Fixes 75674
+
 2005-07-31  Raja R Harinath  <harinath@gmail.com>
 
+       Fix #75658.
+       * expression.cs (Invocation.OverloadResolve): Don't report error
+       CS1501 if error CS1502 has been reported.
+       (New.DoResolve): Delegate CS1501 reporting to
+       Invocation.OverloadResolve.
+
        Fix #75656.
        * statement.cs (Block.CheckInvariantMeaningInBlock): Verify
        invariant-meaning-in-block property in an enclosing block if