disable the building of mjs while I solve the problem with the unexposed ctr of Context
[mono.git] / mcs / mcs / ChangeLog
index 5a9477cd0f6de6bd094f1b6507dd224a0f4bb253..774ddaffcc1449f541e39c585265d3853fbc5bc0 100644 (file)
@@ -1,3 +1,348 @@
+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-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