2005-11-07 Miguel de Icaza <miguel@novell.com>
[mono.git] / mcs / mcs / ChangeLog
index ee21eb9cee97174f87a1f4883d54d416d6805949..a71fe4182a1a3b890267230f0360c825793beb3f 100644 (file)
@@ -1,3 +1,416 @@
+2005-11-07  Miguel de Icaza  <miguel@novell.com>
+
+       * expression.cs (New): Add support for invoking "new" on
+       interfaces that have been flagged with the ComImport attribute and
+       the CoClass.  Fixes #76637 
+
+       * statement.cs (Try.DoEmit): When a variable is captured, do not
+       try to emit the vi.LocalBuilder variable as it has been captured.
+       Create a temporary variable and store the results on the
+       FieldBuilder.  Fixes #76642
+
+2005-11-07  Marek Safar  <marek.safar@seznam.cz>
+
+       * class.cs (CheckPairedOperators): Made compilable with csc 2.0.
+
+       * ecore.cs (InstanceResolve): Fixed CS1540 detection.
+
+       * expression.cs (Binary.DoResolve): Added && optimalization.
+    
+       * typemanager.cs (AddUserType): Removed useless argument.
+
+2005-11-04  Marek Safar  <marek.safar@seznam.cz>
+
+       * statement.cs (Block.variables): Uses ListDictionary.
+
+2005-11-03  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #75969.
+       * class.cs (PartialContainer.EmitType): Customized to emit
+       security attributes.
+       (ClassPart.ApplyAttributeBuilder): Transform security attribute
+       for partial classes.
+
+2005-11-03  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76599.
+       * expression.cs (ElementAccess.DoResolveLValue): Fixed buffer
+       access has to be fixed.
+       
+       * typemanager.cs (IsUnmanagedType): Wrong common field type.
+
+2005-11-01  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76590.
+       * ecore.cs (NullCast.Reduce): Implemented.
+
+       * expression.cs (ArrayCreation.CheckIndices): Correcly check
+       constant type.
+       
+       * statement.cs (SwitchLabel.ResolveAndReduce): Catch null
+       properly.
+       (Foreach.Resolve): Catch null properly.
+
+2005-10-29  Marek Safar  <marek.safar@seznam.cz>
+       * cs-tokenizer.cs: Warning text fix.
+
+       * driver.cs: AllWarningNumbers exposed on public interface.
+
+       * report.cs (): Reviewed warning numbers.
+       (IsValidWarning): Use binary search.
+
+2005-10-29  Marek Safar  <marek.safar@seznam.cz>
+       * driver.cs: Implemeted resource visibility.
+       (Resources): New class for code sharing between /res: and
+       /linkres:
+2005-10-28  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76568.
+       * cfold.cs (ConstantFold.BinaryFold): Implemented null cast
+       folding.
+       
+       * convert (Convert.ImplicitReferenceConversion): NullCast holds
+       contants only.
+       
+       * ecore.cs (NullCast): Child is contant only.
+       
+       * literal.cs (NullLiteral.Reduce): null can be converted to any
+       reference type.
+
+2005-10-28  Kornél Pál  <kornelpal@hotmail.com>
+
+       * driver.cs: Use Encoding.Default as default code page instead
+         of ISO-28591.
+
+2005-10-27  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #76085.
+       * expression.cs (Invocation.Error_InvalidArguments): Handle
+       __arglist parameters.
+       (Invocation.VerifyArgumentsCompat): Likewise.
+       * support.cs (ReflectionParameters.GetSignatureForError): Print
+       __arglist parameters.
+       (InternalParamters.GetSignatureForError): Likewise.
+       * parameter.cs (Parameters.GetSignatureForError): Likewise.
+
+2005-10-26  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (GetPropertyValue): Made public.
+
+       * codegen.cs (AssemblyClass): ResolveClsCompliance renamed to
+       Resolve.
+       Add new property WrapNonExceptionThrows to handle 2.0 assembly
+       attribute.
+       (AssemblyClass.Emit): Emit RuntimeCompatibilityAttribute when it
+       is not defined.
+       
+       * driver.cs: Reflect method name change.
+       
+       * statement.cs (Try.Resolve): Warn when try has both general
+       exception handlers.
+       
+       * typemanager.cs: runtime_compatibility_attr_type new predefined
+       type.
+
+2005-10-26  Raja R Harinath  <harinath@gmail.com>
+
+       Fix #76419.
+       * pending.cs (InterfaceMethod): Allow tm.args [i] to be null --
+       treat it as an empty parameter list.
+
+2005-10-26  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #76271.     
+       * ecore.cs (SimpleName.DoSimpleNameResolve): Make fall-back 
+       ResolveAsTypeStep silent.
+       * statement.cs (Block.AddConstant): Mark block as used.
+       (Block.ResolveMeta): Avoid piling on error messages
+       if a constant initializer resolution fails.
+
+2005-10-25  Raja R Harinath  <rharinath@novell.com>
+
+       * namespace.cs (RootNamespace.VerifyUsingForAll, Namespace.VerifyUsing):
+       Remove.
+       (NamespaceEntry.VerifyAllUsing): New.
+       (NamespaceEntry.AliasEntry.Resolve): New.  Handles common error
+       behaviour.  Delegates actual resolution of alias to ...
+       (NamespaceEntry.DoResolve): ... this.  Renamed from Resolve.
+       (NamespaceEntry.LocalAliasEntry, NamespaceEntry.ExternAliasEntry):
+       Update.
+       * driver.cs (Driver.MainDriver): Update.
+       
+       * namespace.cs (NamespaceEntry.DefineNamespace): Remove.
+       (NamespaceEntry.SymbolFileID): Make into a on-demand computed
+       property.
+       (Namespace.DefineNamespaces, RootNamespace.DefineNamespacesForAll):
+       Remove.
+       * symbolwriter.cs (SymbolWriter.Initialize): Don't call
+       RootNamespace.DefineNamespacesForAll.
+
+2005-10-24  Raja R Harinath  <harinath@gmail.com>
+
+       * typemanager.cs (assemblies, external_aliases, modules)
+       (AddAssembly, AddExternAlias, AddModule GetAssemblies, Modules)
+       (ComputeNamespaces, GetRootNamespace): Remove extra staging
+       overhead.  Move resposibility ...
+       * namespace.cs (GlobalRootNamespace): ... here.  Update to changes.
+       * driver.cs, attribute.cs, codegen.cs: Update to changes.
+
+2005-10-23  Raja R Harinath  <harinath@gmail.com>
+
+       * namespace.cs (RootNamespace.all_namespaces): Renamed from
+       cached_namespaces.  Improve usage.
+       (RootNamespace.Reset, RootNamespace.RegisterNamespace)
+       (RootNamespace.VerifyUsingForAll, RootNamespace.DefineNamespacesForAll):
+       Move from GlobalRootNamespace and simplify.
+       (RootNamespace.Global): Make instance variable.
+       (RootNamespace.RootNamespace): Add "alias name" parameter.
+       (GlobalRootNamespace): Simplify drastically.
+       (Namespace.Lookup): Don't use GetNamespace.
+       * typemanager.cs (GetRootNamespace): Rename from
+       ComputeNamespaceForAlias.
+       (NamespaceClash): Use Global.IsNamespace instead of GetNamespace.
+
+2005-10-23  Marek Safar  <marek.safar@seznam.cz>
+
+       * anonymous.cs (AnonymousContainer): Don't crash when container
+       doesn't exist.
+
+2005-10-23  Marek Safar  <marek.safar@seznam.cz>
+
+       * expression.cs (Binary.DoResolve): Warn when comparing same
+       values.
+
+2005-10-23  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76486.
+       * expression.cs (Binary.DoResolve): It looks like there are no
+       convetsion rules in enum context.
+
+2005-10-19  Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+       Add support for extern alias qualifiers.
+       * typemanager.cs: Move some LookupTypeReflection code
+       to namespace.cs, to have cleaner code. Added some methods
+       to help us keep track of the extern aliased references.
+       * driver.cs: Add suport for extern alias assemblies on command
+       line and check for their warnings/errors. Also keep track of the
+       extern aliased assemblies.
+       * namespace.cs: Move the global functionality of Namespace
+       to GlobalRootNamespace/RootNamespace. Now the global namespace
+       is GlobalRootNamespace.Globa. Also the code moved from 
+       typemanager.cs lives in GlobalRootNames.cs/RootNamespace.cs. 
+       Finally added LocalAliasEntry (AliasEntry before) and
+       ExternAliasEntry, to handle alias statements.
+       * cs-parser.jay: Add support in the grammar for extern alias
+       statement.
+       * doc.cs, delegate.cs, expression.cs ecore.cs, symbolwriter.cs: 
+       Update callings to Namespace (now in GlobalRootNamespace).
+
+2005-10-18  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #76371.
+       * class.cs (TypeContainer.DefineType): Move updating of
+       topological sort earlier in the code.
+       * decl.cs (DeclSpace.ResolveBaseTypeExpr): Don't use TypeBuilder.
+
+2005-10-18  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76273.
+       * cfold.cs (BinaryFold): Reduce constant in enum conversion.
+       
+       * constant.cs (Constant.TryReduce): Moved from Cast class.
+       (Reduce): Made little bit more OO and fixed missing conversions.
+       
+       * ecore.cs (Reduce): Implemented.
+       (Binary.EnumLiftUp): New method to upgrade values to enum values.
+       
+       * literal.cs (Reduce): Implemented.
+       
+       * class.cs: Reverted Miguel's wrong commit.
+
+2005-10-14  Miguel de Icaza  <miguel@novell.com>
+
+       * ecore.cs (GetMemberType): Report the correct mapping for the MemberCore
+
+2005-10-14  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * cs-parser.jay, expression.cs : CS0214 was missing error location
+         for constants. Fixed bug #76404.
+
+2005-10-11  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76370.
+       * convert.cs (ExplicitConversionCore): Fixed object->enum
+       conversion.
+
+2005-10-10  Raja R Harinath  <rharinath@novell.com>
+
+       * ecore.cs (PropertyExpr.Emit): Use Invocation.EmitCall to emit
+       InstanceExpression.
+       (PropertyExpr.EmitCall): Likewise.
+       * expression.cs (Invocation.EmitArguments): Handle case where
+       arguments == null.
+       (Invocation.EmitCall): Avoid allocating temporary variable if
+       there are no arguments.
+
+2005-10-07  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #76323.
+       * convert.cs (ImplicitConversionStandard): Move conversion of
+       void* to arbitrary pointer types ...
+       (ExplicitConversionStandard): .. here.
+       * ecore.cs (Expression.Error_ValueCannotBeConverted): Fix CS0266
+       error to always print typenames.
+
+2005-10-07  Raja R Harinath  <rharinath@novell.com>
+
+       * convert.cs (GetConversionOperator): Rename from
+       GetConversionOperators.  Move operator selection code from ...
+       (UserDefinedConversion): ... here.
+
+2005-10-06  Marek Safar  <marek.safar@seznam.cz>
+
+       * convert.cs (ExplicitConversionCore): Removed duplicate enum
+       conversion.
+
+2005-10-05  Marek Safar  <marek.safar@seznam.cz>
+
+       * assign.cs (Assign.DoResolve): Error method changed.
+
+       * cfold.cs (DoConstantNumericPromotions): Error method changed.
+       
+       * const.cs (ResolveValue): Reset in_transit immediately.
+       
+       * constant.cs: Error method changed.
+       
+       * convert.cs: Removed useless location parameter.
+       (ExplicitNumericConversion): Don't do double enum check.
+       (ExplicitConversionCore): Renamed from ExplicitConversion.
+       (ExplicitUnsafe): Extracted from ExplicitConversion.
+       (ExplicitConversion): Uses for error reporting.
+       
+       * ecore.cs (Error_ValueCannotBeConverted): More logic for more
+       error messages.
+       (ResolveBoolean): Uses common error method.
+       (CastToDecimal): Get rid of ec.
+       (CastFromDecimal): Optimized.
+       (ConvCast): Get rid of ec.
+       
+       * enum.cs (ResolveValue): Reset in_transit immediately.
+       (Emit): Return after first error.
+       
+       * expression.cs: Convert changes.
+       
+       * literal.cs: Error method changed.
+       
+       * statement.cs: Error method changed.
+
+2005-10-03  Raja R Harinath  <rharinath@novell.com>
+
+       * support.cs (SeekableStreamReader.Position): Don't error out when
+       the requested position is just beyond the end of the current
+       buffered data.
+
+2005-09-28  Raja R Harinath  <rharinath@novell.com>
+
+       * support.cs (SeekableStreamReader): Simplify drastically.  Don't
+       try to keep in sync with the byte count of the underlying Stream.
+       However, this limits us to a window size of 2048 characters: i.e.,
+       the maximum lookahead of our lexer/parser can be 2048 characters.
+
+2005-09-28  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #76255.
+       * driver.cs: Fix compilation files with full root path.
+
+2005-09-25  Miguel de Icaza  <miguel@novell.com>
+
+       * report.cs (SymbolRelatedToPreviousError): Format the output so
+       it does not use an open parenthesis that is never closed. 
+
+       * driver.cs: Follow coding guidelines
+
+2005-09-27  Marek Safar  <marek.safar@seznam.cz>
+
+       Fix #72930.
+       * const.cs (Const.ResolveValue): Check for assigning non-null
+       value to reference type.
+
+2005-09-27  Marek Safar  <marek.safar@seznam.cz>
+
+       * anonymous.cs: Implemented ExprClassName.
+       
+       * assign.cs (Assign.DoResolve): Don't chrash when type is not
+       delegate.
+       
+       * attribute.cs (ResolveArguments): Enabled MethodImplOptions
+       check.
+       
+       * class.cs (StaticClass.DefineContainerMembers): Report protected
+       members as error.
+       
+       * codegen.cs: if(ed) PRODUCTION.
+       
+       * convert.cs (Error_CannotImplicitConversion): Better error
+       distinction.
+       
+       * cs-parser.jay: More error checks.
+       
+       * cs-tokenizer.cs (consume_identifier): Fixed Miguel's revert.
+       
+       * driver.cs (CSCParseOption): Enabled wrong option check.
+       
+       * ecore.cs (Expression.ExprClassName): Turned to property.
+       (MemberExpr.CheckIntermediateModification): For checking boxed
+       value types     modification.
+       
+       * statement.cs (Fixed.Resolve): Expression type must be
+       convertible to fixed type.
+       (CollectionForeach.GetEnumeratorFilter,TryType):
+       Small refactoring for easier error checking.
+
+2005-09-26  Marek Safar  <marek.safar@seznam.cz>
+
+       * attribute.cs (Attribute.Resolve): Check Obsolete attribute for
+       attributes.
+       
+       * class.cs (GeneratedBaseInitializer): New class for customization
+       compiler generated initializers.
+       (MemberBase.DoDefine): Check Obsolete attribute here.
+       (FieldMember.DoDefine): Ditto.
+       
+       * const.cs (ExternalConstant.CreateDecimal): Builder for decimal
+       constants.
+       
+       * decl.cs (MemberCore.EmitContext): Returns valid current ec.
+       (MemberCore.GetObsoleteAttribute): Removed argument.
+       (MemberCore.CheckObsoleteness): Obsolete attributes are hierarchic.
+       (MemberCore.CheckObsoleteType): New helper.
+       
+       * delegate.cs,
+       * enum.cs,
+       * statement.cs: Updates after MemberCore changes.
+       
+       * ecore.cs (TypeExpr.ResolveType): Check type obsoleteness here.
+       (FieldExpr.ResolveMemberAccess): Fixed decimal constants checks.
+       
+       * expression.cs (ComposedCast.DoResolveAsTypeStep): Don't check
+       obsolete attribute for compiler construct.
+       (As.DoResolve): Cache result.
+       
+       * iterators.cs (Define_Constructor): Use GeneratedBaseInitializer.
+
+2005-09-26  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #76133.
+       * expression.cs (This.VerifyFixed): In a value type T, the type of
+       'this' is T&, iow, 'this' is either an out or ref parameter.  In a
+       value type R, 'this' is treated as a value parameter.
+
 2005-09-22  Miguel de Icaza  <miguel@novell.com>
 
        * statement.cs (Lock): Use the TemporaryVariable class instead of