+2007-04-27 Miguel de Icaza <miguel@novell.com>
+
+ * generic.cs (TypeManager.LambdaInfer): now this routine will
+ make only one inference from the list of lambda expression that
+ have not participated in inferring a type.
+
+ (TypeManager.InferTypeArguments): The logic that drives the type
+ inference in lambda expressions is now driven here.
+
+2007-04-23 Miguel de Icaza <miguel@novell.com>
+
+ * generic.cs: Large update to LambdaInfer, this is merely an
+ update to start the lambda type inference. It is by no means
+ complete. It is currently merely able to build a sample program
+ (with no iteration for the type parameters).
+
+2007-04-12 Duncan Mak <duncan@a-chinaman.com>
+
+ * cs-parser.jay (interface_method_declaration_body): Fixed typo.
+
+2007-04-08 Marek Safar <marek.safar@gmail.com>
+
+ * cs-parser.jay, linq.cs: First select implementation (hacky).
+
+ * generic.cs (InferTypeArguments): Simplified.
+
+2007-03-31 Marek Safar <marek.safar@gmail.com>
+
+ * generic.cs (InferTypeArguments): Restored validation check.
+ (InferTypeArguments): Move all logic to Compatible method for re-usability.
+
+2007-03-25 Marek Safar <marek.safar@gmail.com>
+
+ * generic.cs (InferTypeArguments): Infer arguments before they are used
+ for compatibility check.
+
+2007-03-15 Marek Safar <marek.safar@gmail.com>
+
+ * generic.cs (InflatedConstraints): Fixed the check order.
+ (TypeArguments.Resolve): Small optimization for generic parameters.
+ (InferTypeArguments): Add infering support for anonymous methods.
+
+2007-03-15 Martin Baulig <martin@ximian.com>
+
+ Fix #79984.
+
+ * generic.cs
+ (TypeParameter.HasConstructorConstraint): Removed.
+ (ConstraintChecker.HasDefaultConstructor): Removed the
+ `TypeBuilder' argument here; correctly check for the ctor
+ constraint on type parameters.
+
+2007-03-15 Martin Baulig <martin@ximian.com>
+
+ Fix #79302.
+
+ * generic.cs
+ (TypeParameter): Create a `MemberCache' here as well. Note that
+ we need to create this on-demand when it's actually used.
+
+2007-03-10 Marek Safar <marek.safar@gmail.com>
+
+ * generic.cs (TypeArguments.Resolve): Avoid redundant checks.
+
+2007-03-09 Raja R Harinath <rharinath@novell.com>
+
+ * cs-parser.jay (WHERE): Move before QUERY_FIRST_TOKEN. 'where'
+ is a valid keyword outside a linq expression too.
+
+2007-03-03 Marek Safar <marek.safar@gmail.com>
+
+ * cs-parser.jay: Implemented basic linq grammar.
+
+ * linq.cs: New file for hosting query specific classes.
+
+2007-02-26 Marek Safar <marek.safar@gmail.com>
+
+ * cs-parser.jay, expression.cs: Compile empty __arglist correctly.
+
+2007-02-20 Marek Safar <marek.safar@gmail.com>
+
+ A fix for bug #80650
+ * cs-parser.jay: Anonymous container starts at constructor declaration
+ and not at block beginning because it has to be usable in constructor
+ initializer.
+
+2007-02-18 Marek Safar <marek.safar@gmail.com>
+
+ A fix for bug #80493 by Atsushi Enomoto
+ * cs-parser.jay: Ignore invalid attribute target.
+
+2007-02-15 Miguel de Icaza <miguel@novell.com>
+
+ * Remove the call to SetExpression for lambda expressions, we do
+ not actually need it.
+
+ Remove expression tracking code as its not needed.
+
+2007-02-11 Miguel de Icaza <miguel@novell.com>
+
+ * cs-parser.jay (lambda_expression_body): when the body is an
+ expression add a statement of the form:
+
+ contextual-return expression.
+
+ Where `contextual-return' is similar to `return', the difference
+ being that if the delegate that the lambda will be converted to
+ has a void return type, it will check that the result is a
+ ExpressionStatement and the result is a plain ret (no return
+ values on the stack). If the return type of the delegate is of a
+ given type, this turns into a return with a value and does the
+ regular checking to check that the computed value can be
+ implicitly converted to the delegate return.
+
+2007-01-30 Miguel de Icaza <miguel@novell.com>
+
+ * cs-parser.jay (anonymous_method_expression): move the
+ before/after productions to the start_anonymous and end_anonymous
+ methods so the code can be reused for lambda functions.
+
+ (lambda_expression_body): wrap expressions implicitly into a
+ block.
+
+ (block): factor out the setup/teardown of parsing a block so we
+ can reuse that in lambda_expression_body
+
+ (lambda_expression): use new anonymous method helper methods.
+
+2007-01-29 Miguel de Icaza <miguel@novell.com>
+
+ * cs-parser.jay: oob_stack make it static (am guessing that is why
+ we no longer initialize it anymore) and reuse it across
+ instances.
+
+2007-01-28 Miguel de Icaza <miguel@novell.com>
+
+ * cs-parser.jay (open_parens): Introduce new non-terminal that
+ abstracts OPEN_PARENS and OPEN_PARENS_LAMBDA as the later can now
+ be returned in places where types are followed by identifiers
+ (this is expected in declaration, fixed, using, foreach and catch
+ clauses).
+
+ Use open_parens in those places, keep OPEN_PARENS in the
+ expressions.
+
+ cs-parser.jay: New grammar bits for parsing lambda expressions.
+
+2007-01-28 Raja R Harinath <rharinath@novell.com>
+
+ Fix #80534, gtest-309.cs
+ * generic.cs (UnifyType): Rename from InferType. Make unification
+ of generic insts simpler and don't insist on inferring all generic
+ parameters in a single generic inst unification.
+ (UnifyTypes): New.
+ (InferGenericInstance): Remove.
+ Analysis and initial patch by David Mitchell <dmitchell@logos.com>.
+
+2007-01-20 Marek Safar <marek.safar@gmail.com>
+
+ * cs-parser.jay: Better parameter error handling.
+
+2007-01-17 Bill Holmes <bill.holmes@ansys.com>
+ Raja R Harinath <rharinath@novell.com>
+
+ * cs-parser.jay (accessor_declarations): Use it instead of 'Pair'.
+ Note the order in which accessors are declared in the source.
+
+2007-01-16 Sergey P. Kondratyev <se@unicom.tomica.ru>
+
+ * generic.cs (TypeParameter.FindMembers): Use the generic
+ constraints, not the constraints to check for methods (first fix
+ of 80518).
+
+2006-12-30 Marek Safar <marek.safar@gmail.com>
+
+ * cs-parser.jay: Better syntax errors handling.
+
+2006-11-21 Marek Safar <marek.safar@gmail.com>
+
+ * cs-parser.jay: Tiny change to work with mcs tokenizer.
+
+ * cs-tokenizer.cs: Remove after unification with mcs.
+
+2006-10-28 Marek Safar <marek.safar@gmail.com>
+
+ A fix for bug #78998
+ * generic.cs (ConstructedType.AsAccessible): Check accessibility of type
+ arguments as well.
+
+2006-10-26 Marek Safar <marek.safar@gmail.com>
+
+ A fix for bug #76591
+ * cs-tokenizer.cs (IsCastToken): Enable a cast of anonymous methods.
+
+2006-10-25 Brian Crowell <brian@fluggo.com>
+
+ Fix #79703
+ * generic.cs (CheckConstraints): Allow generic parameters with
+ inheritance constraints to satisfy reference type constraints.
+
+2006-10-09 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (NullCoalescingOperator.DoResolve): Fix #78964; added gtest-294.cs.
+
+2006-09-25 Martin Baulig <martin@ximian.com>
+
+ * class.cs: Remove after unification with mcs source.
+
+2006-09-24 Raja R Harinath <harinath@gmail.com>
+
+ * convert.cs: Remove after unification with mcs source.
+
+2006-09-24 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (MemberBase.VerifyClsCompliance): When method has type
+ parameters verify them as well.
+
+ * generic.cs (Constraints.VerifyClsCompliance): Verify CLS-Compliance of
+ the type parameter constraints.
+ (Generics.VerifyClsCompliance): Ditto.
+
+2006-09-24 Marek Safar <marek.safar@seznam.cz>
+
+ * anonymous.cs (AnonymousMethod.Compatible): Cannot generate arguments
+ for anonymous block with out argument.
+
+2006-09-24 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (ClassOrStruct.VerifyMembers): Fixed to report correctly
+ not used private events only.
+
+2006-09-23 Marek Safar <marek.safar@seznam.cz>
+
+ * convert.cs (ImplicitReferenceConversion): NullCast to EmptyConstantCast.
+
+ * cs-parser.jay: Parse correctly cast of default (T).
+
+ * generic.cs (DefaultValueExpression.DoResolve): Check for void type.
+ Store original type via EmptyConstantCast.
+
+2006-09-22 Martin Baulig <martin@ximian.com>
+
+ * delegate.cs: Removed; this file is now shared with mcs.
+
+ * attribute.cs: Removed; this file is now shared with mcs.
+
+2006-09-22 Martin Baulig <martin@ximian.com>
+
+ * ecore.cs: Removed; this file is now shared with mcs.
+
+2006-09-21 Marek Safar <marek.safar@seznam.cz>
+
+ * convert.cs (ImplicitReferenceConversion): Reuse ToType.
+
+ * ecore.cs (NullCast): Derives from NullConstant.
+
+ * generic.cs (DefaultValueExpression): Fixed to cope with the constant
+ results.
+
+2006-09-21 Martin Baulig <martin@ximian.com>
+
+ * decl.cs: Removed; this file is now shared with mcs.
+
+2006-09-21 Raja R Harinath <rharinath@novell.com>
+
+ * rootcontext.cs: Remove after unification with mcs source.
+
+ * report.cs: Remove after unification with mcs source.
+ * generic.cs (AddTypeParameter, LookupTypeParameter): Move to
+ mcs/typemanager.cs.
+ (InitGenerics, CleanUpGenerics): Remove.
+
+ * support.cs: Remove after unification with mcs source.
+
+2006-09-20 Raja R Harinath <rharinath@novell.com>
+
+ * codegen.cs: Remove after unification with mcs source.
+
+2006-09-19 Martin Baulig <martin@ximian.com>
+
+ * expression.cs: Removed; this file is now shared with mcs.
+
+2006-09-19 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (TypeManager.IsEqual): Moved into ../mcs/typemanager.cs.
+ (TypeManager.DropGenericTypeArguments): Likewise.
+ (TypeManager.DropGenericMethodArguments): Likewise.
+ (TypeManager.GetTypeArguments): Likewise.
+ (TypeManager.HasGenericArguments): Likewise.
+
+2006-09-19 Martin Baulig <martin@ximian.com>
+
+ * ecore.cs (PropertyExpr.InstanceResolve): Fix the CS1540 check.
+
+2006-09-19 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs: Removed; this file is now shared with mcs.
+
+2006-09-16 Raja R Harinath <rharinath@novell.com>
+
+ * Makefile (LOCAL_MCS_FLAGS): Use instead of PROFILE_MCS_FLAGS.
+ * AssemblyInfo.cs, driver.cs: Remove after unification with mcs source.
+
+2006-09-16 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #79401
+ * class.cs (MethodCore.VerifyClsCompliance): Do check for abstract members
+ only if parent type is class.
+ * decl.cs (MemberCore.GetClsCompliantAttributeValue): Fixed missing cache
+ update.
+
+2006-09-15 Marek Safar <marek.safar@seznam.cz>
+
+ * cs-parser.jay,
+ * expression.cs(MemberAccess.DoResolve): Don't crash when not allowed
+ keywords are used.
+ * typemanager.cs(CSharpName): Converts NullType to null.
+
+2006-09-15 Martin Baulig <martin@ximian.com>
+
+ * pending.cs: Removed; this file is now shared with mcs.
+
+2006-09-15 Martin Baulig <martin@ximian.com>
+
+ * statement.cs: Removed; this file is now shared with mcs.
+
+2006-09-15 Martin Baulig <martin@ximian.com>
+
+ * rootcontext.cs (RootContext.BrokenCircularDeps): Removed.
+
+ * driver.cs: Removed the `--broken-cycles' argument.
+
+2006-09-15 Martin Baulig <martin@ximian.com>
+
+ * namespace.cs: Removed; this file is now shared with mcs.
+
+2006-09-15 Martin Baulig <martin@ximian.com>
+
+ * decl.cs (MemberName): Minor code cleanups.
+
+2006-09-15 Martin Baulig <martin@ximian.com>
+
+ * parameter.cs: Removed; this file is now shared with mcs.
+
+2006-09-15 Martin Baulig <martin@ximian.com>
+
+ * enum.cs: Removed; this file is now shared with mcs.
+
+2006-09-15 Martin Baulig <martin@ximian.com>
+
+ * Makefile: Define `GMCS_SOURCE'.
+
+ * flowanalysis.cs: Removed; this file is now shared with mcs.
+
+2006-09-15 Martin Baulig <martin@ximian.com>
+
+ Removed modifiers.cs, literal.cs, location.cs, roottypes.cs,
+ assign.cs, const.cs, cfold.cs, constant.cs, symbolwriter.cs and
+ doc.cs - they are now shared with mcs.
+
+ * gmcs.exe.sources: Include these files from ../mcs/.
+
+2006-09-15 Martin Baulig <martin@ximian.com>
+
+ * old-code.cs, gen-il.cs, gen-treedump.cs: Removed old stuff.
+ * g1.cs, sample-hello.cs, sample-stack.il: Likewise.
+
+2006-09-14 Marek Safar <marek.safar@seznam.cz>
+
+ * assign.cs, ecore.cs, expression.cs: Share error message text.
+ * class.cs (FieldMember.Define): Check for variable of static type.
+ * decl.cs (check_type_parameter): Report correct type name.
+ * driver.cs (LoadAssembly): Uses error output for errors.
+ * generic.cs (Constraints.Resolve): Add check for constraint accessibility
+ (TypeArguments.Resolve): Static class cannot be used as an argument.
+ * statement.cs (ResolveMeta): Constants cannot be generic types.
+
+2006-09-12 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (TypeManager.IsIList): Moved into convert.cs.
+
+ * convert.cs (Convert.Array_To_IList): Moved here and correctly
+ implement it; fixes #79345.
+
+2006-09-08 Marek Safar <marek.safar@seznam.cz>
+
+ * decl.cs (DeclSpace.SetParameterInfo): Check for nonexistent type
+ parameter.
+ * expression.cs (TypeOf.GetAttributableValue): Check for open generic
+ types.
+ * generic.cs: Improved error messages.
+ * typemanager.cs (RemoveGenericArity): Made public.
+
+2006-09-08 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs (TypeManager.interlocked_type): New public field.
+ (TypeManager.int_interlocked_compare-exchange): New public field.
+ (TypeManager.InitEnumUnderlyingTypes): Also initialize the
+ enumerator types here and call InitGenericCoreTypes().
+ (TypeManager.InitCoreTypes): Call InitEnumeratorTypes() right
+ after calling InitEnumUnderlyingTypes().
+
+ * rootcontext.cs
+ (RootContext.ResolveCore): Added `System.Threading.Interlocked' to
+ `classes_second_stage'.
+
+2006-09-07 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs, generic.cs (GenericMethod.Define): Check for type parameter
+ collisions.
+ * statement.cs (Block.Variables): Made public.
+
+2006-09-07 Martin Baulig <martin@ximian.com>
+
+ * driver.cs
+ (MainDriver): Revert r62663 from Marek; see #70506 for details.
+
+2006-09-01 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (TypeManager.IsIList): Also handle base classes and interfaces.
+
+2006-09-01 Raja R Harinath <rharinath@novell.com>
+
+ Fix #79238
+ * expression.cs (Invocation.MoreSpecific): Check for reference
+ types earlier.
+
+2006-08-29 Miguel de Icaza <miguel@novell.com>
+
+ * cs-parser.jay: Turn 1522 into a warning, instead of an error #79210
+
+2006-08-17 Miguel de Icaza <miguel@novell.com>
+
+ * cs-tokenizer.cs: Apply patch from Atsushi Enomoto that fixes
+ #52019 and #79064, the use of the \uXXXX sequence in source code
+ to represent unicode characters.
+
+2006-08-15 Marek Safar <marek.safar@seznam.cz>
+
+ * expression.cs (SizeOf.DoResolve): Check for void type. Fixed enum types
+ support.
+ * class.cs, ecore.cs, statement.cs: Merged to one error message.
+
+2006-08-14 Raja R Harinath <rharinath@novell.com>
+
+ Fix #79067
+ * cs-tokenizer.cs (parse_less_than): Allow '*' to appear in a type
+ parameter too. This only avoids a parse error -- the semantic
+ error is caught elsewhere.
+
+2006-08-13 Miguel de Icaza <miguel@novell.com>
+
+ * assign.cs: Catch attempts to assign to a method groups in += and
+ report as 1656
+
+2006-08-13 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #79056
+ * cs-parser.jay: Don't destroy current array type by typeof of array's.
+
+2006-08-12 Marek Safar <marek.safar@seznam.cz>
+
+ * cs-parser.jay: Check whether a constraint clause has already been
+ specified for type parameter.
+ * generic.cs (Constraints): Exposed location.
+
+2006-08-12 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (Method.Define): Issue a warning when generic method looks like
+ an entry point.
+ * decl.cs (MemberCore.GetSignatureForError): Print member type arguments
+ as well.
+ * report.cs: New warning number.
+
+2006-08-09 Marek Safar <marek.safar@seznam.cz>
+
+ * anonymous.cs(AnonymousDelegate.Emit): Uses Constructor filter when
+ looking for ctor.
+ * decl.cs (MemberCache.FindMembers): When container is interface we need to
+ search all base interfaces as a member can be ambiguous.
+ * delegate.cs (Delegate.FindMembers): Fixed to return valid data for
+ Constructor member type filter.
+ (Delegate.ResolveConstructorMethod) Uses Constructor filter.
+ * ecore.cs: (Expression.MemberLookup): Implemented ambiguity error/warning
+ reporting for returned memberinfos.
+ * report.cs: Updated.
+ * typemanager.cs (TypeManager.LookupBaseInterfacesCache): Uses TypeManager
+ version to work on all runtimes.
+ (TypeManager.RealMemberLookup): Removed members filtering.
+
+2006-08-08 Raja R Harinath <rharinath@novell.com>
+
+ * ecore.cs (FieldExpr.EmitAssign): Release temporary.
+ (PropertyExpr.EmitAssign): Likewise.
+ * expression.cs (Indirection.EmitAssign): Likewise.
+ (LocalVariableReference.EmitAssign): Likewise.
+ (ParameterReference.EmitAssign): Likewise.
+ (Invocation.EmitArguments): Likewise.
+ (ArrayAccess.EmitAssign): Likewise.
+ (IndexerAccess.EmitAssign): Likewise.
+ (This.EmitAssign): Likewise.
+ (ConditionalLogicalOperator.Emit): Likewise.
+
+ Fix #79026
+ * codegen.cs (EmitContext.GetTemporaryLocal): Simplify. Use Stack
+ instead of ArrayList. If the hashtable has a LocalBuilder, don't
+ leave it in after returning it.
+ (EmitContext.FreeTemporaryLocal): Simplify. Update to changes.
+
+2006-08-06 Marek Safar <marek.safar@seznam.cz>
+
+ * expresssion.cs (IndexerAccess.DoResolve): Fixed to report correct error
+ message.
+
+2006-08-05 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (TypeContainer.AddPartial): Add check for partial declarations
+ with different type names.
+ (TypeContainer.UpdateTypeParameterConstraints): Updated an error message.
+
+2006-08-03 Raja R Harinath <rharinath@novell.com>
+
+ Fix cs0146-3.cs and cs0146-4.cs.
+ * class.cs (TypeManager.CheckRecursiveDefinition): Check that
+ enclosing types don't depend on the current type.
+
+2006-08-02 Raja R Harinath <rharinath@novell.com>
+
+ Fix #77963
+ * class.cs (TypeContainer.DoDefineMembers): Use
+ FindBaseMemberWithSameName on Parent, since we're interested in
+ whether we hide inherited members or not.
+ (FindBaseMemberWithSameName): Make slightly more robust.
+
+ Fix #77396
+ * codegen.cs (IResolveContext.GenericDeclContainer): New.
+ (EmitContext): Implement new interface requirement.
+ * namespace.cs (UsingEntry, LocalAliasEntry): Likewise.
+ * decl.cs (MemberCore): Likewise.
+ (DeclSpace.GenericDeclContainer): Rename from DeclContainer.
+ * ecore.cs (SimpleName.ResolveAsTypeTerminal): Use
+ ec.GenericDeclContainer to check for generic parameters.
+ (SimpleName.DoSimpleNameResolve): Likewise.
+ * generic.cs (TypeParameter.DeclContainer): Remove override.
+
+ * namespace.cs (NamespaceEntry.Doppelganger): Create slave
+ declspaces for doppelgangers too.
+ (UsingEntry): Implement IResolveContext.
+ (UsingEntry.Resolve): Don't set ToplevelTypes.Namespace. Use
+ 'this' as the resolve context.
+ (LocalAliasEntry): Likewise.
+
+ Implement parts of #77403
+ * roottypes.cs (RootDeclSpace): New. Used to represent the
+ toplevel declaration space. Each namespace declaration introduces
+ a "partial" root declaretion space.
+ * namespace.cs (NamespaceEntry.SlaveDeclSpace): New.
+ (NamespaceEntry.ctor): Create a SlaveDeclSpace if necessary.
+ * cs-parser.jay (CSharpParser.ctor): Initialize 'current_class'
+ from 'current_namespace.SlaveDeclSpace'.
+ (namespace_declaration): Likewise.
+ * class.cs (TypeContainer.ctor): Remove parent==ToplevelTypes
+ check. It can't happen now.
+ * decl.cs (DeclSpace.LookupType): Likewise.
+ * driver.cs (MainDriver): Sanity check.
+
+2006-08-01 Raja R Harinath <rharinath@novell.com>
+
+ * decl.cs (DeclSpace.FindNestedType): Remove.
+ (DeclSpace.LookupNestedTypeINHierarchy): Use PartialContainer and
+ LookupTypeContainer to get the container of the nested type.
+ * class.cs (TypeContainer.FindNestedType): Make non-override.
+
+2006-07-31 Raja R Harinath <rharinath@novell.com>
+
+ * decl.cs (DeclSpace.PartialContainer): Move field from ...
+ * class.cs (TypeContainer.PartialContainer): ... here.
+ (TypeContainer.AddBasesForPart): New helper.
+ (MemberBase.ParentContainer): Remove. Use Parent.PartialContainer
+ instead.
+ * cs-parser.jay (current_class): Convert to DeclSpace.
+ (struct_declaration, interface_declaration, class_declaration):
+ Use AddBasesForPart instead of .Bases directly.
+ * const.cs, iterators.cs: Update to changes.
+
+2006-07-28 Raja R Harinath <rharinath@novell.com>
+
+ * class.cs (TypeContainer.AddMemberType): Rename from
+ AddToTypeContainer.
+ (TypeContainer.AddMember): Rename from AddToMemberContainer.
+ (AddTypeContainer): New. Combine AddClassOrStruct and
+ AddInterface.
+ (AddPartial): Update. Add 'is_partial' argument.
+ * roottypes.cs: Update to changes.
+ * cs-parser.jay (push_current_class): New helper for handling
+ current_container and current_class.
+ (struct_declaration, interface_declaration, class_declaration):
+ Use it.
+
+2006-07-26 Raja R Harinath <rharinath@novell.com>
+
+ * roottypes.cs: Rename from tree.cs.
+
+ Rename RootContext.Tree.Types to RootContext.ToplevelTypes.
+ * tree.cs (Tree, ITreeDump): Remove types.
+ * rootcontext.cs (tree, Tree): Remove fields.
+ (root, ToplevelTypes): New.
+ * *.cs: Update to rename.
+
+ * tree.cs (Tree.RecordDecl): Remove.
+ (RootTypes.AddToTypeContainer): Record the toplevel type in its
+ namespace here.
+ * class.cs, cs-parser.jay: Remove mention of RecordDecl.
+
+2006-07-23 Raja R Harinath <harinath@gmail.com>
+
+ * codegen.cs (EmitContext.Flags): Move InCatch, InFinally,
+ DoFlowAnalysis and OmitStructFlowAnalysis here.
+ (ec.With): Rename from WithUnsafe and generalize.
+ (ec.WithCheckState): Remove. All users can be handled by 'With'.
+ (ec.WithFlowAnalyis): New.
+ * ecore.cs, expression.cs, statement.cs: Update.
+
+2006-07-22 Raja R Harinath <harinath@gmail.com>
+
+ * statement.cs (Block.ResolveMeta): Simplify slightly.
+
+ * codegen.cs (EmitContext.Flags): New enum. Used to represent the
+ multiple boolean fields. Convert InUnsafe, constant_check_state,
+ check_state to flags.
+ (CheckState, ConstantCheckState): Update.
+ (InUnsafe): New read-only property.
+ (FlagsHandle): Rename from CheckStateHandle and convert to handle
+ arbitrary flags.
+ (WithUnsafe): New helper similar to WithCheckState.
+ * statement.cs (Block.ResolveMeta): Use WithUnsafe.
+ (Unsafe.Resolve, Unsafe.DoEmit): Likewise.
+
+2006-07-21 Raja R Harinath <rharinath@novell.com>
+
+ Make comparisons use the same IL irrespective of whether they're
+ in a 'checked' or 'unchecked' context: one of the issues in #78899
+ * codegen.cs (EmitContext.CheckState): Make read-only property.
+ (EmitContext.ConstantCheckState): Likewise.
+ (EmitContext.CheckStateHandle, EmitContext.WithCheckState): New
+ helper that implement a save/restore stack for CheckState
+ values. This is the only way to change check-state.
+ * ecore.cs (Expression.ExpressionToArrayArgument): Use WithCheckState.
+ * expression.cs (CheckedExpr.DoResolve, CheckedExpr.Emit): Likewise.
+ (CheckedExpr.EmitBranchable): New forwarding method.
+ (UnCheckedExpr): Likewise.
+ * statement.cs (Block.ResolveMeta): Use WithCheckState.
+ (Unchecked.Resolve, Unchecked.DoEmit): Likewise.
+ (Checked.Resolve, checked.DoEmit): Likewise.
+
+2006-07-21 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (TypeManager.InferType): When inferring an array
+ type, also allow IList<T> and ICollection<T>. Fixes #78900.
+
+2006-07-21 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (TypeManager.IsIEnumerable): Renamed into IsIList()
+ and allow IList`1 and all its base interfaces.
+
+ * convert.cs (Convert.ImplicitReferenceConversion): Allow
+ converting from an array-type of T to IList<T>.
+
+2006-07-21 Martin Baulig <martin@ximian.com>
+
+ * ecore.cs (SimpleName.DoSimpleNameResolve): Added CS0307 check.
+
+2006-07-20 Miguel de Icaza <miguel@novell.com>
+
+ * anonymous.cs: Cache the resolved anonymous delegate, and return
+ this so that the ResolveTopBlock is only triggered once, not
+ twice.
+
+ Currently we trigger ResolvetopBlock twice due to a first pass of
+ argument check compatibility, and a second pass that does the
+ actual resolution.
+
+2006-07-15 Marek Safar <marek.safar@seznam.cz>
+
+ * annonymous.cs (AnonymousMethod.CreateScopeType): Fixed nested type
+ modifiers.
+ * rootcontext.cs (Reset): Add helper_classes.
+
+2006-07-15 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #78860
+ * statement.cs (Switch.SimpleSwitchEmit): Handle case null at any position
+ correctly.
+
+2006-07-13 Miguel de Icaza <miguel@novell.com>
+
+ * statement.cs (Lock): Handle expressions of type
+ TypeManager.null_type specially. Fixes #78770
+
+2006-07-08 Marek Safar <marek.safar@seznam.cz>
+
+ * expression.cs (Binary.ResolveOperator): Don't crash when null is assigned
+ to an event.
+
+2006-07-08 Marek Safar <marek.safar@seznam.cz>
+
+ * attribute.cs (AttributeTester.GetMethodObsoleteAttribute): Fixed to look
+ for accessors as well.
+ * ecore.cs (EventExpr): Add AccessorTable.
+
+2006-07-03 Martin Baulig <martin@ximian.com>
+
+ * ecore.cs (UnboxCast.Emit): Also use `Unbox_Any' for generic
+ instances of value types.
+
+ * convert.cs (Convert.ExplicitConversion): Correctly handle
+ object->nullable conversions.
+
+2006-07-01 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #78738
+ * attribute.cs, class.cs, ecore.cs : Add missing location of related symbol
+ for CS0122 where appropriate.
+ * typemanager.cs (IsNestedChildOf): Type can be null in the case of top
+ level attributes.
+ (Filter): Assembly can be null in the case of top level attributes.
+
+2006-06-28 Raja R Harinath <rharinath@novell.com>
+
+ Fix #78716
+ * generic.cs (TypeManager.InferParamsTypeArguments): If there are
+ no arguments, return 'false': nothing can be inferred.
+
+2006-06-25 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #78690
+
+ * ecore.cs (Expression.MemberLookupFailed): Don't crash when failed lookup
+ is done at global level.
+
+2006-06-24 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #77002, Implemented TypeForwarder support.
+
+ * attribute.cs (Attribute.GetArgumentType): Reads type argument.
+ * codegen.cs (AssemblyClass.ApplyAttributeBuilder): Add TypeForwarder
+ attribute handling.
+ * expression.cs (TypeOf.TypeArgument): Exposes typeof type.
+ * typemanager.cs (): Add type_forwarder_attr_type.
+
+2006-06-24 Marek Safar <marek.safar@seznam.cz>
+
+ * report.cs: Add CS0469 warning.
+
+2006-06-22 Martin Baulig <martin@ximian.com>
+
+ * class.cs
+ (TypeContainer.GetNormalBases): Also use ResolveAsBaseTerminal()
+ for interfaces; fixes #78686, which is a modification of #78380
+ with interfaces instead of classes.
+
+2006-06-21 Martin Baulig <martin@ximian.com>
+
+ * codegen.cs (CodeGen.Save): Moved the symbol file generation into
+ the `try'-block, so we also report CS0016 etc. there.
+
+2006-06-21 Martin Baulig <martin@ximian.com>
+
+ * ecore.cs (FieldExpr.EmitAssign, FieldExpr.AddressOf): Correctly
+ handle SetAssigned() and SetMemberIsUsed() for generic types;
+ fixes #77545.
+
+2006-06-21 Martin Baulig <martin@ximian.com>
+
+ * delegate.cs
+ (Delegate.VerifyMethod): Allow `params' methods; fixes #78678.
+
+2006-06-21 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (Unary.ResolveOperator): In `Operator.AddressOf',
+ also report CS1686 for parameters.
+
+2006-06-21 Martin Baulig <martin@ximian.com>
+
+ * statement.cs (GotoCase.Resolve): Report a warning (CS0469)
+ instead of an error if the value is not implicitly convertible to
+ the switch types; fixes #77964.
+
+2006-06-21 Raja R Harinath <rharinath@novell.com>
+
+ Fix #78673
+ * class.cs (FieldBase.ResolveInitializer): Stop resolution if
+ FieldBuilder is null.
+
+ Fix #78662
+ * expression.cs (Binary.CheckShiftArguments): Don't overwrite original
+ 'left' and 'right' before error-checking.
+
+2006-06-19 Martin Baulig <martin@ximian.com>
+
+ * convert.cs
+ (Convert.ImplicitConversionStandard): Cleanup and correctly
+ implement nullable conversions.
+ (Convert.ImplicitStandardConversionExists): Likewise.
+ (Convert.ExplicitConversion): Likewise.
+
+2006-06-19 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (Nullable.Wrap.Create, Nullable.Unwrap.Create): New public static
+ methods; make the ctors protected.
+
+2006-06-19 Martin Baulig <martin@ximian.com>
+
+ Fixed #78380; added gtest-273.cs.
+
+ * ecore.cs
+ (Expression.ResolveAsBaseTerminal): Move the constraint checking
+ into ResolveAsTypeTerminal().
+
+ * generic.cs
+ (ConstraintChecker.HasDefaultConstructor): Use the non-cache based
+ TypeManager.FindMembers() to check for the default ctor.
+
+2006-06-18 Marek Safar <marek.safar@seznam.cz>
+
+ * generic.cs: Fixed NullableInfo accessibility.
+
+2006-06-16 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (Constraints.InflatedConstraints.inflate): Correctly inflate
+ generic types; fixes #78400.
+
+2006-06-16 Juraj Skripsky <js@hotfeet.ch>
+
+ * ecore.cs (SimpleName.Error_ObjectRefRequired): Do not truncate the name.
+ Fixed bug #78601.
+ (MemberExpr.EmitInstance): Use GetSignatureForError () to get full name.
+ (FieldExpr.DoResolve): likewise.
+ (PropertyExpr.InstanceResolve): likewise.
+ (EventExpr.InstanceResolve): likewise.
+
+2006-06-15 Martin Baulig <martin@ximian.com>
+
+ * statement.cs
+ (SwitchLabel.ResolveAndReduce): Added `bool allow_nullable'
+ argument; always allow a `null' label if true.
+ (Switch.SwitchGoverningType): Take an `Expression expr' argument.
+ (Switch.TableSwitchEmit, Switch.SimpleSwitchEmit): Check whether
+ we have a `null' label and mark the new `null_target' label;
+ default to the `default' label.
+ (Switch.Resolve): Add support for nullable types. Fixes #78630.
+
+2006-06-15 Martin Baulig <martin@ximian.com>
+
+ * class.cs (Operator.Define): Allow an implicit/explicit operator
+ to convert to/from a nullable value of the enclosing type.
+
+ * generic.cs (TypeManager.IsNullableTypeOf): New public method.
+ (Nullable.Unwrap, Nullable.Wrap): Make these classes public.
+
+ * convert.cs
+ (Convert.ImplicitStandardConversionExists): Add support for lifted
+ implicit/explicit conversions.
+ (Convert.ImplicitConversionStandard): Likewise.
+
+2006-06-13 Martin Baulig <martin@ximian.com>
+
+ * ecore.cs (SimpleName.DoSimpleNameResolve): Check whether we have
+ type arguments and create a ConstructedType if necessary. Fixes #78400.
+
+2006-06-04 Marek Safar <marek.safar@seznam.cz>
+
+ * parameter.cs (Parameter.ApplyAttributeBuilder): More DefaultValue
+ attribute applicable tests for attribute argument.
+
+2006-06-02 Raja R Harinath <rharinath@novell.com>
+
+ Fix #78079
+ * expression.cs (Binary.DoNumericPromotions): Remove and rewrite.
+ (Binary.OverloadResolve_PredefinedIntegral): New.
+ (Binary.OverloadResolve_PredefinedFloating): New.
+ (Binary.OverloadResolve_PredefinedString): New.
+ (Binary.ResolveOperator): Use those instead of DoNumericPromotions.
+ Follow the standard more closely, and treat numeric promotions in
+ terms of overload resolution.
+ (Binary.CheckShiftArguments): Simplify.
+
+2006-06-01 Raja R Harinath <rharinath@novell.com>
+
+ * flowanalysis.cs (MyBitVector): Simplify representation.
+ (MyBitVector.Clone): Avoid allocating BitArray.
+ (MyBitVector.operator&): Rename from MyBitVector.And and make symmetric.
+ (MyBitVector.operator|): Likewise, with MyBitVector.Or.
+ (*): Update. Change all references to MyBitVector.And and
+ MyBitVector.Or to &= and |=.
+
+2006-05-31 Raja R Harinath <rharinath@novell.com>
+
+ * generic.cs (Nullable.LiftedBinaryOperator.EmitEquality):
+ Use bne.un instead of ceq+brfalse.
+
+ Fix cs0208-[23].cs
+ * typemanager.cs (IsUnmanagedType): Disallow generic types and
+ generic parameters.
+
+2006-05-29 Raja R Harinath <rharinath@novell.com>
+
+ Fix cs0231-[34].cs.
+ * cs-parser.jay (formal_parameter_list): Extend the pattern below
+ to param arguments too.
+
+2006-05-26 Miguel de Icaza <miguel@novell.com>
+
+ * cs-parser.jay: Catch another parsing form for arglist being
+ followed by other arguments. Fixes #78313.
+
+2006-05-25 Raja R Harinath <rharinath@novell.com>
+
+ Fix #78324
+ * expression.cs (Binary.DoResolve): Use Nullable.LiftedBinaryOperator
+ also when one of the operands is a null literal.
+ * generic.cs (Nullable.LiftedBinaryOperator.EmitEquality): Rewrite
+ to improve clarity, and generate slightly better code.
+
+2006-05-24 Raja R Harinath <rharinath@novell.com>
+
+ * flowanalysis.cs (FlowBranchingToplevel.AddReturnOrigin): Move
+ checking of out parameters to ...
+ (FlowBranchingToplevel.Merge): ... here.
+ (FlowBranchingException.AddBreakOrigin): If 'finally_vector' is
+ set, propagate the origin upward, and only complain if there was
+ no other error.
+ (FlowBranchingException.AddContinueOrigin): Likewise.
+ (FlowBranchingException.AddReturnOrigin): Likewise.
+ (FlowBranchingException.AddGotoOrigin): Likewise.
+
+2006-05-23 Raja R Harinath <rharinath@novell.com>
+
+ * flowanalysis.cs (UsageVector.MergeOrigins): If an origin is
+ unreachable, skip it.
+ (FlowBranchingException.Merge): Always propagate jumps, even if
+ the finally block renders subsequent code unreachable.
+
+2006-05-18 Raja R Harinath <rharinath@novell.com>
+
+ Fix #77601
+ * statement.cs (Goto.Resolve): Move responsibility for resolving
+ 'goto' to FlowBranching.AddGotoOrigin.
+ (Goto.SetResolvedTarget): New. Callback to set the
+ LabeledStatement that's the target of the goto.
+ (Goto.DoEmit): Use Leave instead of Br when crossing an
+ unwind-protect boundary.
+ * flowanalysis.cs (FlowBranching.AddGotoOrigin): Rename from
+ LookupLabel and adjust to new semantics.
+ (FlowBranchingToplevel.AddGotoOrigin): Likewise.
+ (FlowBranchingBlock.AddGotoOrigin): Likewise. Use
+ Goto.SetResolvedTarget to update target.
+ (FlowBranchingLabeled.AddGotoOrigin): Likewise.
+ (FlowBranchingException.AddGotoOrigin): Rewrite to be similar to
+ AddBreakOrigin & co. Delay propagation until ...
+ (FlowBranchingException.Merge): ... this.
+
+ * statement.cs (Block.Resolve): Always depend on flow-branching to
+ determine unreachability. Kill workaround that originally emitted
+ only one statement after an "unreachable" label (see infloop in
+ test-515.cs).
+
+ Fix #77869, #76148, #77755, #75255 and a host of other bugs.
+ This is still "wrong", but anything better would probably need a
+ multi-pass algorithm.
+ * flowanalysis.cs (FlowBranchingLabeled): Salt away a copy of the
+ usage vector. Force current usage vector to be reachable, to
+ optimistically signify backward jumps.
+ (FlowBranchingLabeled.LookupLabel): Note if a backward jump is
+ detected.
+ (FlowBranchingLabeled.Merge): New. If no backward jump was
+ detected, return the original salted-away usage vector instead,
+ updated with appropriate changes. Print unreachable warning if
+ necessary.
+ * statement.cs (Block.Resolve): Don't print unreachable warning on
+ a labeled statement.
+
+2006-05-17 Gert Driesen <drieseng@users.sourceforge.net>
+
+ * driver.cs: Pass filename without path to AssemblyBuilder's
+ AddResourceFile. Fixes bug #78407.
+
+2006-05-17 Raja R Harinath <rharinath@novell.com>
+
+ * statement.cs (LabeledStatement.Resolve): Move merging of origins ...
+ * flowanalysis.cs (FlowBranchingLabeled): ... here.
+ (FlowBranching.MergeChild): Overwrite
+ reachability information from Labeled branchings too.
+
+2006-05-16 Raja R Harinath <rharinath@novell.com>
+
+ * statement.cs (Goto.Resolve): Merge jump origins here ...
+ * flowanalysis.cs (FlowBranching.Label): ... rather than here.
+
+ * flowanalysis.cs (FlowBranching.LookupLabel): Move CS0159 check ...
+ (FlowBranchingToplevel.LookupLabel): ... here. Add CS1632 check.
+ (FlowBranchingGoto.LookupLabel): New. Handle back jumps.
+ (FlowBranchingBlock.LookupLabel): Call LabeledStatement.AddReference
+ here, ...
+ * statement.cs (Goto.Resolve): ... not here.
+ (Goto.Emit): Remove CS1632 check.
+
+2006-05-14 Marek Safar <marek.safar@seznam.cz>
+
+ * ecore.cs (Expression.ResolveAsTypeTerminal): Fixed type in the obsolete
+ error message.
+
+2006-05-11 Raja R Harinath <rharinath@novell.com>
+
+ * flowanalysis.cs (UsageVector.MergeJumpOrigins): Kill.
+ (FlowBranchingBlock.Label): Use UsageVector.MergeOrigins.
+ (FlowBranchingException.Label): Likewise.
+
+ * flowanalysis.cs (MyBitVector.SetAll): New. Sets all bits to the
+ given value.
+ (MyBitVector.Or): Use it to avoid losing information (Count).
+ (FlowBranching.MergeOrigins): Likewise.
+
+ * flowanalysis.cs (UsageVector.IsDirty): Remove.
+ (UsageVector.Parameters, UsageVector.ParameterVector): Likewise.
+ (UsageVector.Locals, UsageVector.LocalVector): Likewise.
+ (UsageVector.ToString): Simplify.
+ (UsageVector.MergeSiblings): Move here from ...
+ (FlowBranching.Merge): ... here.
+ (FlowBranchingToplevel.CheckOutParameters): Take an UsageVector,
+ not a MyBitVector.
+
+2006-05-10 Raja R Harinath <rharinath@novell.com>
+
+ * flowanalysis.cs (UsageVector.MergeOrigins): Simplify, now that a
+ null bitvector is treated as all-true.
+
+ * flowanalysis.cs (MyBitVector.And, MyBitVector.Or): Make lazier.
+ (MyBitVector): Rationalize invariants. 'vector != null' implies
+ that we have our own copy of the bitvector. Otherwise,
+ 'InheritsFrom == null' implies all inherited bits are true.
+
+2006-05-09 Marek Safar <marek.safar@seznam.cz>
+
+ * statement.cs (LocalInfo): Add IsConstant.
+ (LocalInfo.DeclareLocal): Moved from EmitMeta and changed to don't emit
+ local variable for constants.
+
+2006-05-09 Raja R Harinath <rharinath@novell.com>
+
+ * flowanalysis.cs (MyBitVector.Empty): New.
+ (MyBitVector): Don't allow InheritedFrom to be null.
+ (MyBitVector.And, MyBitVector.Or): Treat 'null' as all-ones.
+ (UsageVector, FlowBranching): Update to changes.
+
+ * flowanalysis.cs (FlowBranching.InTryWithCatch): Don't terminate
+ recursion. The 'Parent == null' condition isn't sufficient for
+ anonymous methods.
+ (FlowBranching.AddBreakOrigin): Likewise.
+ (FlowBranching.AddContinueOrigin): Likewise.
+ (FlowBranching.AddReturnOrigin): Likewise.
+ (FlowBranching.StealFinallyClauses): Likewise.
+ (FlowBranching.MergeTopBlock): Move to FlowBranchingToplevel.
+ (FlowBranching.CheckOutParameters): Likewise.
+ (FlowBranchingToplevel): Terminate all the above recursions here.
+ (FlowBranchingToplevel.End): Rename from MergeTopBlock.
+ * codegen.cs (EmitContext.ResolveTopBlock): Update to changes.
+
+ * flowanalysis.cs (BranchingType.Toplevel): New. Represents a
+ toplevel block.
+ (FlowBranchingToplevel): New. Empty for now.
+ (FlowBranching.MergeTopBlock): Update.
+ * codegen.cs (EmitContext.ResolveTopBlock): Create a Toplevel
+ branching for the anonymous delegate.
+ (EmitContext.StartFlowBranching): Add ToplevelBlock variant.
+
+ * flowanalysis.cs (UsageVector.MergeOrigins): Reorganize.
+ (UsageVector.MergeJumpOrigins): Don't ignore current reachability
+ information at the start of the merge. Reorganize.
+
+2006-05-07 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (MethodData.Define): Method cannot implement interface accessor.
+
+2006-05-07 Marek Safar <marek.safar@seznam.cz>
+
+ * expression.cs (QualifiedAliasMember.ResolveAsTypeStep): Pass location
+ to newly introduced ctor.
+
+ * namespace.cs (Namespace.Error_NamespaceDoesNotExist): Moved an error
+ message to one place.
+ (GlobalRootNamespace.Error_NamespaceDoesNotExist): Custom message for
+ global namespace.
+
+2006-05-07 Marek Safar <marek.safar@seznam.cz>
+
+ * const.cs (Const.Error_ExpressionMustBeConstant): Better error message.
+
+ * ecore.cs (Expression.ResolveAsConstant): Updated.
+
+ * statement.cs (ResolveMeta): Updated.
+
+2006-05-06 Marek Safar <marek.safar@seznam.cz>
+
+ * cs-parser.jay: __arglist cannot be used in initializer.
+
+2006-05-06 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #77879
+ * namespace.cs (LocalAliasEntry.DoResolve): Don't allow to access nested
+ private types.
+
+2006-05-05 Raja R Harinath <rharinath@novell.com>
+
+ * statement.cs (EmptyStatement.ResolveUnreachable): Override.
+ (LabeledStatement): Add 'name' parameter.
+ (LabeledStatement.Name, LabeledStatement.JumpOrigins): New.
+ (Block.AddLabel): Update to changes.
+ * cs-parser.jay (labeled_statement): Likewise.
+
+ * flowanalysis.cs (BranchingType.Labeled): New.
+ (UsageVector.MergeOrigins): Remove unused 'branching' argument.
+ (FlowBranchingLabeled): New. Does nothing for now, but will
+ eventually handle 'goto' flows.
+ * codegen.cs (StartFlowBranching): Add new LabeledStatement variant.
+ * statement.cs (LabeledStatement.Resolve): Create a FlowBranching
+ that's terminated ...
+ (Block.Resolve): ... here.
+
+ * flowanalysis.cs (UsageVector.MergeFinally): Remove.
+ (UsageVector.MergeFinallyOrigins): Likewise.
+ (FlowBranching.InTryOrCatch): Likewise.
+ (FlowBranching.AddFinallyVector): Likewise.
+ (FlowBranchingException): Update to changes.
+
+ Fix #78290
+ * statement.cs (Return.Resolve): Move error checking to ...
+ * flowbranching.cs (FlowBranching.AddReturnOrigin): ... this.
+ (FlowBranchingException): Handle return origins like break and
+ continue origins.
+ (FlowBranching.UsageVector.CheckOutParameters): Remove.
+
+2006-05-04 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #76122
+ * class.cs (TypeContainer.FindMembers): Includes event method in the methods
+ filter.
+
+2006-05-04 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #77543
+ * class.cs (MethodData.Define): Do public accessor check only when method
+ implements an interface.
+
+2006-05-04 Raja R Harinath <rharinath@novell.com>
+
+ Remove special handling of 'break'
+ * flowanalysis.cs (Reachability): Remove all mention of 'breaks'.
+ (Reachability.Meet): Simplify. Remove 'do_breaks' argument.
+ (UsageVector.Break): Remove.
+ (FlowBranching.Merge): Use 'Reachable.IsUnreachable' to determine
+ reachability.
+ (FlowBranchingBreakable.Merge): Don't ResetBreaks.
+
+ * statement.cs (Break.Resolve): Call UsageVector.Goto (), not
+ UsageVector.Breaks (). Don't set NeedsReturnLabel.
+
+2006-05-03 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #75726
+ * pending.cs (PendingImplementation.BaseImplements): A found member cannot
+ be the interface member.
+
+2006-05-03 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #60069
+ * constant.cs (LongConstant.EmitLong): Fixed to catch also negative values
+ for emitting small (int) values.
+
+2006-05-03 Raja R Harinath <rharinath@novell.com>
+
+ Fix #59427
+ * flowanalysis.cs (FlowBranchingException.Merge): Ensure
+ control-flow passes through the 'finally' after merging-in all the
+ control-flows from 'try' and the 'catch' clauses.
+
+ * flowanalysis.cs (FlowBranching.IsLoop): Remove.
+ (FlowBranching.IsTryOrCatch): Remove 'is_return' parameter. It's
+ always true at the only non-recursive entry point.
+ (FlowBranching.CreateBranching) [BranchingType.Loop]: Return a
+ FlowBranchingBreakable.
+ (FlowBranchingLoop): Remove.
+ * statement.cs (Return.DoResolve): Update to changes.
+
+ Fix #76471, #76665
+ * flowanalysis.cs (FlowBranching.BranchingType.Embedded): New.
+ (FlowBranching.CreateBranching): Handle it: create a
+ FlowBranchingContinuable.
+ (FlowBranching.BreakCrossesExceptionBoundary): Remove.
+ (FlowBranching.AddContinueOrigin): Similar to AddBreakOrigin,
+ except that it handles the 'continue' command.
+ (FlowBranching.UsageVector.MergeOrigins): Rename from
+ MergeBreakOrigins.
+ (FlowBranchingContinuable): Similar to FlowBranchingBreakable,
+ except that it overrides AddContinueOrigin.
+ (FlowBranchingException): Override AddContinueOrigin, similar to
+ AddBreakOrigin.
+ * statement.cs (While.Resolve, Foreach.ArrayForeach.Resolve):
+ Create a new branching around the embedded statement.
+ (Do.Resolve, For.Resolve): Likewise. Do reachability analysis for
+ control flow after the embedded statement.
+ (Continue.Resolve): Move all error checking to AddContinueOrigin.
+
+ * flowanalysis.cs (FlowBranching.IsSwitch): Remove.
+ (FlowBranching.CreateBranching) [BranchingType.Switch]: Create a
+ FlowBranchingBreakable.
+ (FlowBranchingSwitch): Remove.
+
+ Fix test-503.cs
+ * statement.cs (Break.Resolve): Simplify. Move responsibility for
+ error reporting to ...
+ * flowanalysis.cs (FlowBranching.AddBreakOrigin) ... this.
+ Rename from 'AddBreakVector'. Add new location argument. Return
+ a bool indicating whether the 'break' crosses an unwind-protect.
+ (FlowBranchingException.AddBreakOrigin): Add.
+ (FlowBranchingException.Merge): Propagate 'break's to surrounding
+ flowbranching after updating with the effects of the 'finally'
+ clause.
+ (FlowBranchingBreakable): New common base class for
+ FlowBranchingLoop and FlowBranchingSwitch.
+
+ * statement.cs (Foreach.ArrayForeach.Resolve): Set barrier after
+ embedded statement.
+ (Foreach.CollectionForeach.Resolve): Remove extraneous flowbranching.
+
+2006-05-02 Raja R Harinath <rharinath@novell.com>
+
+ * statement.cs (Do.Resolve): If the loop is infinite, set the
+ barrier.
+ (While.Resolve, For.Resolve): Set a barrier after the embedded
+ statement. There's no direct control flow that goes from the end
+ of the embedded statement to the end of the loop.
+ * flowanalysis.cs (FlowBranching.Infinite): Remove.
+ (FlowBranchingLoop.Merge): Don't look at 'Infinite'. The changes
+ above ensure that the reachability is correctly computed.
+
+ * flowanalysis.cs (Reachability.ResetBarrier): Remove.
+ (UsageVector.MergeBreakOrigins): If the current path is
+ unreachable, treat it as if all parameters/locals are initialized.
+ (FlowBranchingLoop.Merge): Don't clear any barriers. Handle
+ infinite loops before merging-in break origins.
+
+ * flowanalysis.cs (Reachability.Meet): Simplify code handling 'returns'.
+ (Reachability.Reachable): Split part into ...
+ (Reachability.Unreachable): ... this. Simplify.
+ (Reachability.IsUnreachable): Use 'Unreachable' instead.
+
+ * flowanalysis.cs (Reachability.SetReturnsSometimes): Remove.
+ (Reachability.SetThrowsSometimes): Likewise.
+ (FlowBranchingBlock.MergeTopBlock): Don't compare against
+ TriState.Always, use corresponding property.
+ * statement.cs (Lock.Resolve, Try.Resolve, Using.Resolve): Likewise.
+ (Block.Resolve): Likewise. Remove some redundant checks.
+
+2006-05-02 Raja R Harinath <harinath@gmail.com>
+
+ * flowanalysis.cs (UsageVector.Throw): Set barrier too.
+ (Reachability.Meet): Don't bother checking AlwaysThrows --
+ barrier is always set.
+ (FlowBranchingBlock.Merge): Likewise.
+
+2006-05-01 Rafael Teixeira <rafaelteixeirabr@hotmail.com>
+
+ * attribute.cs: fixed_buffer_cache is declared only if NET_2_0 is
+ defined, so it's references should also compile only for NET_2_0
+ (as occurs in mcs version)
+
+2006-05-01 Raja R Harinath <harinath@gmail.com>
+
+ * codegen.cs (EmitContext.ResolveTopBlock): Remove redundant
+ checks for unreachable.
+
+2006-05-01 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #77980
+ * flowanalysis.cs (UsageVector.IsAssigned): Add flag to ignore short path.
+
+ * statement.cs (Block.UsageWarning): Uses newly introduced flag to detect
+ whether field is really assigned.
+
+2006-04-30 Raja R Harinath <harinath@gmail.com>
+
+ * flowanalysis.cs (Reachability): Make 4-argument constructor
+ private.
+ (Reachability.Meet): Rename from 'And'. Remove static variant.
+ (Reachability.Always): Rename from the highly misleading
+ 'Reachability.Never'.
+ (FlowBranching.Merge): Update to changes. Mark an impossible
+ situation with a 'throw'.
+ (*): Update to changes.
+
+2006-04-29 Raja R Harinath <harinath@gmail.com>
+
+ * flowanalysis.cs (TriState): Rename from FlowBranching.FlowReturns.
+ Remove 'Undefined'.
+ (FlowBranching.TriState_Meet): Rename from AndFlowReturns. Simplify.
+ (FlowBranching.TriState_Max): Rename from OrFlowReturns. Simplify.
+ (*): Update to changes.
+ * statement.cs: Update to changes.
+
+2006-04-28 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #78049
+ *class.cs (Method.FindOutBaseMethod): Base method cannot be property method.
+
+2006-04-28 Raja R Harinath <harinath@gmail.com>
+
+ * flowanalysis.cs (FlowBranching.MergeTopBlock): Don't create a
+ dummy UsageVector.
+
+ * flowanalysis.cs (UsageVector.MergeChild): Change FlowBranching
+ argument to two arguments: an usage-vector and a bool. Move call
+ to FlowBranching.Merge () ...
+ (FlowBranching.MergeChild, FlowBranching.MergeTopBlock): ... here.
+
+ * flowanalysis.cs (UsageVector.MergeChild): Move special-case
+ handling of loop and switch reachability to ...
+ (FlowBranchingLoop.Merge, FlowBranchingSwitch.Merge): ... these.
+
+2006-04-27 Raja R Harinath <harinath@gmail.com>
+
+ * flowanalysis.cs (FlowBranching.InLoop): Move special-case
+ handling to FlowBranchingLoop.InLoop.
+ (FlowBranching.InSwitch): Likewise, to FlowBranchingSwitch.
+
+2006-04-26 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #78115
+ * anonymous.cs (AnonymousMethod.DoResolve): Moved the check whether
+ anonymous method is allowed from AnonymousContainer here.
+
+ * attribute.cs, codegen.cs (EmitContext): Add IsAnonymousMethodAllowed.
+
+2006-04-24 Raja R Harinath <rharinath@novell.com>
+
+ Fix #78156
+ * flowanalysis.cs (MyBitVector.Or): Add null check on argument.
+
+2006-04-23 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #49011.
+ * constant.cs (FloatConstant.Reduce): Add range checking for checked context.
+ (DoubleConstant.Reduce): Ditto.
+
+2006-04-23 Raja R Harinath <rharinath@novell.com>
+
+ * expression.cs (LocalVariableReference.DoResolveBase): Simplify.
+ Remove 'lvalue_right_side' argument. Move parts to ...
+ (LocalVariableReference.ResolveLocalInfo, LocalVariable.DoResolve)
+ (LocalVariable.DoResolveLValue): ... these.
+
+2006-04-21 Raja R Harinath <rharinath@novell.com>
+
+ Fix cs1655.cs
+ * codegen.cs (EmitContext.InRefOutArgumentResolving): Remove.
+ * expression.cs (EmptyExpression.LValueMemberOutAccess): New.
+ (LocalVariableReference.DoResolveBase): Use it to implement new
+ CS1655 check.
+ (IndexerAccess.DoResolveLValue): Handle LValueMemberOutAccess.
+ (Argument.Resolve): Simplify. Move CS1510 check ...
+ * ecore.cs (Expression.ResolveLValue): ... here.
+ (UnboxCast.DoResolveLValue): Handle LValueMemberOutAccess.
+ (PropertyExpr.DoResolveLValue): Likewise.
+ (FieldExpr.Report_AssignToReadonly): Likewise.
+ (FieldExpr.DoResolve): Add 'out_access' argument. Use
+ LValueMemberAccess or LValueMemberOutAccess on instance depending
+ on it.
+ (FieldExpr.DoResolveLValue): Pass 'out_access' argument to
+ DoResolve as appropriate.
+
+2006-04-20 Raja R Harinath <rharinath@novell.com>
+
+ Fix #75800
+ * expression.cs (Invocation.VerifyArgumentsCompat): Don't try
+ implicit conversions on 'out' and 'ref' arguments.
+
+ * expression.cs (Invocation.VerifyArgumentsCompat): Reorganize to
+ improve clarity. Remove dead code.
+
+ Fix #66031
+ * statement.cs (Block.UsageWarning): Allow VariableInfo to be null.
+ (Catch.Resolve): Resolve VarBlock if it exists.
+
+2006-04-19 Miguel de Icaza <miguel@novell.com>
+
+ * statement.cs (Foreach.EmitFinally): Do not emit the enumerator
+ twice, this was some residual code, the enumerator was emitted
+ properly in the two branche of if later.
+
+ Fixes #78031
+
+ Thanks to Martin for finding the source of the problem
+
+2006-04-19 Raja R Harinath <rharinath@novell.com>
+
+ * expression.cs (Cast.ResolveLValue): Remove. The result of a
+ cast is never an lvalue.
+ (Cast.DoResolve, Cast.ResolveRest): Combine.
+ (Argument.Emit): Simplify slightly. Move 'Expr is
+ IMemoryLocation' check ...
+ (Argument.Resolve): ... here.
+ (Argument.Error_LValueRequired): Remove. Inline into only user.
+
+ Simplifications. Fix cs0191-2.cs
+ * ecore.cs (FieldExpr.DoResolve): Move handling of CS0192, CS0198,
+ CS1649 and CS1651 to ...
+ (FieldExpr.Report_AssignToReadonly): ... this. Simplify by moving
+ the actual selection of the error code and message to a lookup
+ table. Add a dummy return value to simplify callsites.
+ (FieldExpr.ResolveLValue): Don't allow a constructor to write to
+ readonly fields of other instances of the same type. Move CS0197
+ warning from ...
+ * expression.cs (Argument.Resolve): ... here. Simplify code.
+ Ensure that ec.InRefOutArgumentResolving is only set during LValue
+ resolution of an out or ref argument. The code simplification
+ above uses this invariant.
+
+2006-04-18 Raja R Harinath <rharinath@novell.com>
+
+ Possibly fix #77752. Fix cs1690-[4-7].cs.
+ * ecore.cs (Expression.CheckMarshalByRefAccess): Renamed from
+ CheckMarshallByRefAccess. Drop parameter.
+ (FieldExpr.CheckMarshalByRefAccess): Update. Change CS1690 to a
+ warning.
+ (FieldExpr.DoResolve): Call CheckMarshalByRefAccess on
+ InstanceExpression.
+ * report.cs (AllWarnings): Add CS1690.
+ * expression.cs (Argument.Resolve): Use EmptyExpression.OutAccess
+ for ref access too.
+ (LocalVariableReference.DoResolveBase): Update.
+
+2006-04-09 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (MethodOrOperator): Moved common parts from method class.
+ detect obsolete attributes.
+ (Method.Define): Simplified as it reuses code from base.
+ (Constructor.ValidAttributeTargets): Fixed issue found during
+ refactoring.
+ (Destructor.ValidAttributeTargets): Fixed issue found during
+ refactoring.
+ (Operator): Finished refactoring set off by #78020. Operator class is now
+ ordinary method class.
+
+ * anonymous.cs: Updated.
+
+2006-04-09 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (Constructor.Emit): Don't emit the attributes twice.
+
+2006-04-09 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (Operator.Emit): Extracted code from MethodData to correctly
+ detect obsolete attributes.
+ (Method.CreateEmitContext): Moved to MethodOrOperator.
+
+2006-04-09 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #78048.
+ * class.cs (TypeContainer.MemberCoreArrayList.DefineContainerMembers): Throw
+ customized exception to make crash detection easier.
+ (MethodOrOperator): Started to work on new base class for methods and
+ operators.
+ (Method): Derives from MethodOrOperator.
+ (Constructor.Emit): Emits its own attributes.
+ (AbstractPropertyEventMethod.Emit): Ditto.
+ (Operator): Derives from MethodOrOperator, will refactor fully in extra
+ patch.
+ (Operator.Emit): It's temporary more tricky than should be.
+
+ * doc.cs (GetMethodDocCommentName): Updated after operator changes.
+
+ * report.cs (InternalErrorException): Add ctor with inner exception.
+
+2006-04-08 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #76744.
+ * ecore.cs (SimpleName.ResolveAsTypeStep): Report better error when type is
+ only not visible.
+
+2006-04-07 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #77916.
+ * expression.cs (ArrayCreation.GetAttributableValue): Creates correctly typed
+ array.
+
+2006-04-06 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (Class.ApplyAttributeBuilder): Report an error when ComImport
+ attribute is present and Guid not.
+ (Interface.ApplyAttributeBuilder): Ditto.
+
+ * attribute.cs: Add error message.
+
+2006-04-06 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #78020.
+
+ * attribute.cs (Attribute.AttachTo): The attribute can have multiple
+ sources (it's composite) so hold them in extra array as they are used in
+ Emit phase only. It worked in the previous versions by mistake.
+ (Attribute.Emit): Emit attribute for more owners when exist.
+
+ * codegen.cs, class.cs: Updated to don't re-attach attribute twice as now
+ it has now different behaviour.
+
+2006-04-04 Marek Safar <marek.safar@seznam.cz>
+
+ * constant.cs (Constant.IsDefaultInitializer): New method.
+
+ * class.cs: Updated.
+
+ * expression.cs (ArrayCreation.CheckIndices): Add an optimization to don't
+ re-initialize default values. It saves KBs almost for every assembly.
+ Thanks Zoltan for the idea.
+ (ArrayCreation.ResolveInitializers): Renamed from ValidateInitializers.
+ (ArrayCreation.DoResolve): Resolve only once.
+ (ArrayCreation.Emit): Emit static initializer only when it is faster.
+ (ArrayCreation.GetAttributableValue): Cope with optimized values.
+
+2006-04-03 Zoltan Varga <vargaz@gmail.com>
+
+ * report.cs (Warning, Error): Add 0-, 1-, and 2- argument specializations.
+ From #77961.
+
+2006-04-01 Marek Safar <marek.safar@seznam.cz>
+
+ * assign.cs (Assign.DoResolve): Assignment to same variable can occur
+ in an embedded statement too.
+
+2006-04-01 Raja R Harinath <rharinath@novell.com>
+
+ Fix #77929
+ * typemanager.cs (IsNestedChildOf): Drop generic arguments before
+ testing.
+
+ Fix #77958
+ * statement.cs (Switch.EmitObjectInteger) [ulong]: Remove bad cast.
+
+ Fix #77962
+ * report.cs (SymbolRelatedToPreviousError): Drop generic type
+ arguments before checking whether a type is reflected or not.
+
+ Fix #77954
+ * expression.cs (Invocation.IsApplicable): Ensure a generic method
+ definition doesn't take part in overload resolution.
+ (Invocation.IsParamsMethodApplicable): Likewise.
+ (Invocation.OverloadResolve): When replacing a reflected override
+ method with its base definition, ensure that type arguments are
+ applied.
+
+2006-04-01 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #77966.
+
+ * class.cs (TypeContainer.AddPartial): Don't report an error when modifier
+ was not specified.
+
+ * modifiers.cs: Add DEFAULT_ACCESS_MODIFER.
+
+2006-03-31 Marek Safar <marek.safar@seznam.cz>
+
+ * assign.cs (LocalTemporary): Don't require ILGenerator in the resolve
+ phase.
+
+ * anonymous.cs, assign.cs, ecore.cs, expression.cs: Updated after
+ LocalTemporary change.
+
+ * class.cs (ClassOrStruct.DefineDefaultConstructor): Moved from
+ TypeContainer.
+ (ClassOrStruct.DefineFieldInitializers): Implemented static field
+ initializers optimization.
+ (ClassOrStruct.TypeAttr): Moved from modifiers.
+ (Constructor.CheckBase): Don't crash when static ctor has parameters.
+ (FieldBase.ResolveInitializer): Resolves initializer.
+ (FieldBase.HasDefaultInitializer): New property.
+
+ * cs-parser.jay: Removed message.
+
+ * expression.cs (CompilerGeneratedThis): New specialization.
+
+ * modifiers.cs (TypeAttr): Moved to ClassOrStruct.TypeAttr
+
+2006-03-28 Marek Safar <marek.safar@seznam.cz>
+
+ * cs-parser.jay, cs-tokenizer.cs: On demand Stack allocation.
+
+2006-03-27 Marek Safar <marek.safar@seznam.cz>
+
+ * ecore.cs (Expression.ResolveAsConstant): Clean up, enum constants should
+ be now EnumConstants only.
+
+2006-03-27 Marek Safar <marek.safar@seznam.cz>
+
+ * attribute.cs, driver.cs: Reset more caches.
+
+2006-03-26 Marek Safar <marek.safar@seznam.cz>
+
+ * cs-tokenizer.cs (adjust_real): Uses float.Parse for float literals.
+
+2006-03-26 Marek Safar <marek.safar@seznam.cz>
+
+ * constant.cs (Constant.Reduce): Replaced EmitContext with single bool
+ for easier reuse. Updated all overrides.
+ (IntegralConstant): New base class for all integral constants.
+ (IntegralConstant.Error_ValueCannotBeConverted): When assigned value if out
+ of the constant range, report custom error.
+ (UIntConstant.Reduce): Fixed uint conversion.
+
+ * ecore.cs, literal.cs: Reduce updates.
+
+2006-03-26 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #75813.
+
+ * class.cs (Constructor.Define): Removed extra if for default ctors.
+ A patch from Atsushi Enomoto.
+
+2006-03-26 Marek Safar <marek.safar@seznam.cz>
+
+ * attribute.cs (Attribute.ResolveConstructor): Conversion was moved to
+ GetAttributableValue.
+
+ * constant.cs (Constant.GetAttributableValue): Does implicit conversion
+ when required.
+
+ * convert.cs (ImplicitConversionRequired): Error message moved to
+ DoubleLiteral.
+
+ * ecore.cs (Expression.GetAttributableValue): Add type parameter for
+ automatic implicit conversion of an output value.
+ (EnumConstant.GetAttributableValue): Don't reduce the enum constants.
+
+ * expression.cs (ArrayCreation.GetAttributableValue): Add element type
+ conversion.
+ (TypeOf.GetAttributableValue): Add extra handling for object type.
+
+ * literal.cs (DoubleLiteral.Error_ValueCannotBeConverted): Doubles can have
+ special error message.
+
+2006-03-25 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (Constructor.Emit): Don't crash when struct ctor is
+ InternalCall.
+ (Constructor.ApplyAttributeBuilder): Transform MethodImplAttribute to be
+ compatible with MS runtime.
+
+2006-03-23 Marek Safar <marek.safar@seznam.cz>
+
+ * attribute.cs (Attribute.ResolveConstructor): Check for an invalid
+ attribute arguments here.
+
+ * class.cs (Indexer.Define): The check was moved to attribute class.
+
+2006-03-21 Marek Safar <marek.safar@seznam.cz>
+
+ * expression.cs (StringConcat.Append): Reverted back to no warning state.
+
+2006-03-21 Marek Safar <marek.safar@seznam.cz>
+
+ * const.cs (Error_ConstantCanBeInitializedWithNullOnly): Share a message.
+
+ * statement.cs (Block.ResolveMeta): Look for wrong object constants in
+ the blocks too.
+
+2006-03-21 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc-bootstrap.cs : fix build.
+
+2006-03-20 Marek Safar <marek.safar@seznam.cz>
+
+ * expression.cs (StringConcat.Append): Issue a warning when empty string
+ is going to append.
+
+2006-03-20 Marek Safar <marek.safar@seznam.cz>
+
+ * assign.cs (CompoundAssign.ResolveSource): Removed.
+
+ * attribute.cs (ResolvePossibleAttributeType): Updated after MemberAccess
+ clean up.
+
+ * class.cs (TypeContainer.FindMethods): Removed.
+ (TypeContainer.CheckMemberUsage): Made static.
+
+ * codegen.cs (GetAssemblyName): Uses Length for empty string test.
+
+ * constant.cs (CheckRange): Removed unused type argument.
+ (CheckUnsigned): Removed unused type argument.
+
+ * cs-parser.jay: Updated after MemberAccess clean up.
+ Uses Length for empty string test.
+
+ * cs-tokenizer.cs: Uses Length for empty string test.
+ (IsCastToken): Made static.
+ (is_hex): Made static.
+ (real_type_suffix): Made static.
+
+ * decl.cs (SetupCache): Made static.
+ (OnGenerateDocComment): Removed unused ds argument.
+
+ * delegate.cs (VerifyDelegate): Removed unused argument.
+
+ * doc.cs: Uses Length for empty string test.
+
+ * driver.cs: Uses Length for empty string test.
+
+ * enum.cs (IsValidEnumType): Made static
+
+ * expression.cs (EnumLiftUp): Removed unused argument.
+ (ResolveMethodGroup): Ditto.
+ (BetterConversion): Ditto.
+ (GetVarargsTypes): Ditto.
+ (UpdateIndices): Ditto.
+ (ValidateInitializers): Ditto.
+ (MemberAccess.ctor): Ditto.
+ (GetIndexersForType): Ditto.
+
+ * flowanalysis.cs: (MergeFinally): Removed unused argument.
+
+ * iterators.cs: Updated after MemberAccess clean up.
+
+ * location.cs: Uses Length for empty string test.
+
+ * namespace.cs: Uses Length for empty string test.
+
+ * report.cs (CheckWarningCode): Made static.
+
+ * statement.cs (LabeledStatement): Removed unused argument.
+
+ * typemanager.cs (FilterNone): Removed.
+
+2006-03-18 Marek Safar <marek.safar@seznam.cz>
+
+ * codegen.cs (EmitContext.TestObsoleteMethodUsage): Removed as it become
+ obsolete.
+
+ * class.cs: Updated.
+
+2006-03-18 Marek Safar <marek.safar@seznam.cz>
+
+ * cs-parser.jay.cs: __arglist is not allowed for delegates.
+
+2006-03-18 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #77816.
+
+ * anonymous.cs.cs (AnonymousMethod): Add host to allow access to
+ host container.
+ (AnonymousMethod.ImplicitStandardConversionExists): New method.
+ (AnonymousMethod.Compatible): Moved parameter resolving to DoResolve.
+ Add more error reporting; Fixed issue with params.
+
+ * convert.cs (ImplicitStandardConversionExists): Returned conversion check.
+
+ * cs-parser.jay: AnonymousMethod requires host container.
+
+ * delegate.cs (NewDelegate.DoResolve): Updated after Compatible changes.
+
+2006-03-18 Raja R Harinath <harinath@gmail.com>
+
+ * class.cs: Change 'TypeContainer ds' constructor argument to
+ 'DeclSpace parent'. Some classes were missed below due to
+ different naming convention.
+
+ * class.cs (MemberCore.Parent): Delete. This makes the
+ ParentContainer changes below enforceable by the compiler.
+
+ Treat pointers to enclosing declaration space as 'DeclSpace', not
+ 'TypeContainer'.
+ * class.cs, const.cs, delegate.cs, enum.cs, iterator.cs: Change
+ 'TypeContainer parent' constructor argument to 'DeclSpace parent'.
+
+ * statement.cs (LocalInfo..ctor): Use DeclSpace argument instead
+ of TypeContainer.
+ (Block.AddThisVariable): Likewise.
+ * class.cs (MethodData.Define, MethodData.Emit): Likewise.
+ (AbstractPropertyEventMethod.Emit): Likewise.
+ (AbstractPropertyEventMethod.EmitMethod): Likewise.
+ (GetMethod.Define, SetMethod.Define): Likewise.
+ (PropertyMethod.Define, DelegateMethod.Define): Likewise.
+ (DelegateMethod.EmitMethod): Likewise.
+
+ Fix regression test-partial-13.cs.
+ Rationalize use of PartialContainer. Ensure that the partial
+ class semantics can be tied to type-correctness, i.e., any
+ violation will cause a compile error.
+ * class.cs, const.cs: Access all fields that belong to class
+ TypeContainer via ParentContainer. Arguments of EmitContexts and
+ Resolve()-like functions still use 'Parent'.
+
+ * class.cs (SourceMethod): Use DeclSpace, not TypeContainer.
+ (*.CreateEmitContext): Change TypeContainer argument to DeclSpace.
+ (PropertyMethod.CheckModifiers): Remove unused argument.
+ * codegen.cs (EmitContext..ctor): Change TypeContainer argument to
+ DeclSpace.
+
+2006-03-28 Raja R Harinath <rharinath@novell.com>
+
+ * decl.cs (DeclSpace.LookupGeneric): Update to changes.
+
+2006-03-17 Raja R Harinath <harinath@gmail.com>
+
+ Make semantics of PartialContainer simpler.
+ * decl.cs (DeclSpace.IsPartial): Remove.
+ * class.cs (TypeContainer.IsPartial): Likewise.
+ (TypeContainer..ctor): Set PartialContainer to point to self.
+ (TypeContainer.GetClsCompliantAttributeValue): Don't use IsPartial.
+ (TypeContainer.FindNestedType): Likewise.
+ (MemberCore.ParentContainer): Simplify. Remove deprecation.
+
+2006-03-17 Marek Safar <marek.safar@seznam.cz>
+
+ * typemanager.cs.cs (GetInterfaces): Don't recreate 0-sized arrays.
+
+2006-03-15 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (FieldMember.Emit): ParentContainer is real parent for partial
+ classes.
+
+2006-03-15 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (Operator.Define): An error for base conversion was not
+ reported correctly.
+
+2006-03-13 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #77593, #77574.
+
+ * class.cs (MethodCore.CheckBase): Another if for operator.
+
+2006-03-18 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #77822.
+
+ * expression.cs (VerifyArgumentsCompat): Reverted to double error
+ reporting, it's more tricky than I thought.
+
+2006-03-09 Marek Safar <marek.safar@seznam.cz>
+
+ * anonymous.cs (AnonymousMethod.Compatible): Don't crash when parameters
+ were not resolved
+
+ * delegate.cs (Delegate.GetInvokeMethod): Use emitcontext free MemberLookup.
+ (DelegateCreation.ImplicitStandardConversionExists): New method for just
+ conversion test.
+
+ * ecore.cs (Expression.MemberLookup): Don't ask for emitcontext when it's
+ not needed.
+
+2006-03-04 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #77353.
+
+ * class.cs (SetMethod.DefineParameters): Uses new parameters type ctor.
+ (Event.Define): ditto
+ (SetIndexerMethod.DefineParameters): Uses Parameters.MergeGenerated.
+
+ * delegate.cs (Delegate.Define): Uses Parameters.MergeGenerated.
+ Removed redundant code and set NewSlot for Invoke method too.
+
+ * parameter.cs (Parameters.ctor): Add custom, type ctor.
+ (Parameters.MergeGenerated): New method. Use this method when you merge
+ compiler generated argument with user arguments.
+
+2006-03-03 Marek Safar <marek.safar@seznam.cz>
+
+ * attribute.cs (ResolveAsTypeTerminal): Removed.
+
+ * ecore.cs (Expression.ResolveAsTypeTerminal): Make virtual to allow
+ specialization for predefined types; 30% speed up.
+ Finally placed obsolete check to right place.
+ (Expression.ResolveType): Removed.
+
+ * enum.cs, expression.cs, parameter.cs, statement.cs, typemanager.cs:
+ Updated after ResolveType was removed.
+
+ * expression.cs (Cast.ctor): Check void cast.
+ (Binary.ResolveAsTypeTerminal): Is never type.
+ (Conditional.ResolveAsTypeTerminal): Is never type.
+
+ * rootcontext.cs (ResolveCore): Set base type to simplify some code later.
+
+2006-03-26 Marek Safar <marek.safar@seznam.cz>
+
+ * rootcontext.cs (ResolveCore): Removed System.INullableValue.
+
+2006-03-23 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (Is.DoResolve, As.DoResolve): Perform a dynamic
+ type check if either of the types is an open generic type.
+
+2006-03-23 Martin Baulig <martin@ximian.com>
+
+ * convert.cs
+ (Convert.ExplicitTypeParameterConversion): New method; implement
+ explicit type parameter conversions.
+
+2006-03-23 Martin Baulig <martin@ximian.com>
+
+ * convert.cs (Convert.ImplicitTypeParameterConversion): Do not
+ blindly allow all conversions if we do not have any constraints.
+
+2006-02-27 Marek Safar <marek.safar@seznam.cz>
+
+ * attribute.cs (Attribute.PosArguments, Attribute.NamedArguments): Use
+ these two separated members to simplify the code.
+ (Attribute.Resolve): Refactored to use new fields and methods.
+ (Attribute.ResolveConstructor): Extracted from ResolveArguments and
+ implemented obsolete attribute checking.
+ (Attribute.ResolveNamedArguments): Extracted from ResolveArguments and
+ implemented obsolete checking again. It look line never ending quest ;-)
+ (GlobalAttribute.ResolveConstructor): Need to override as the rest.
+
+ * cfold.cs (BinaryFold): TryReduce throws an exception to indicate error.
+
+ * constanct.cs (TryReduce): Throws OverflowException to indicate error.
+
+ *class.cs (Property.Define): Add RegisterProperty call.
+
+ * cs-parser.jay: Replaced ArrayList with fixed array for attribute
+ argument groups (only 2).
+
+ * ecore.cs (Expression.GetAttributableValue): New virtual method used for
+ encoding expression to arguments.
+ (Expression.ExprClassToResolveFlags): Just turned to property.
+
+ * expression.cs (ArrayCreation.ValidateInitializers): Slightly optimized.
+ (ArrayCreation.GetAttributableValue): Renamed from EncodeAsAttribute and
+ optimized as well as implemented support for zero-length attributes.
+
+ * typemanager.cs (TypeManager.RegisterProperty, TypeManager.GetProperty):
+ Add caching of PropertyInfo's.
+
+2006-02-25 Marek Safar <marek.safar@seznam.cz>
+
+ * delegate.cs (DelegateCreation.ResolveMethodGroupExpr): Don't report
+ error multiple times.
+
+2006-02-25 Marek Safar <marek.safar@seznam.cz>
+
+ New partial class implementation.
+ A fix for #77027, #77029, #77403
+
+ * attribute.cs (Attributable): Made attributes protected.
+
+ * class.cs (TypeContainer): Add PartialContainer and partial_parts as
+ the replacements of ClassPart and PartialContainer.
+ (TypeContainer.AddClassOrStruct): Call RecordDecl here.
+ (TypeContainer.AddInterface): Ditto.
+ (TypeContainer.AddPartial): The main method for partial classes. It checks
+ for errors and merges ModFlags and attributes. At the end class is added to
+ partial_parts list.
+ (TYpeContainer.DefineDefaultConstructor): Checks whether default ctor is
+ required here.
+ (TypeContainer.GetClsCompliantAttributeValue): Cope with partial class too.
+ (TypeContainer.GetNormalPartialBases): Resolves base classes and interfaces
+ from the rest of partial classes.
+ (TypeContainer.GetClassBases): Simplified.
+ (TypeContainer.DefineTypeBuilder): New method, mostly extracted from
+ DefineType.
+ (TypeContainer.DefineDefaultConstructor): Is used by derived classes.
+ (TypeContainer.HasExplicitLayout): Uses Flags now.
+ (PartialContainer): Removed.
+ (ClassOrStruct.AddToContainer): Moved enclosing member name check here.
+ (StaticClass): Was merged with Class.
+ (Class.GetClassBases): class and static class bases are verified here.
+ (Class.TypeAttr): Added static attributes when class is static.
+ (Struct.RegisterFieldForInitialization): Moved from TypeContainer.
+ (MemberBase): In some cases we need to call parent container for partial
+ class. It should be eliminated but it's not easy now.
+
+ * cs-parser.jay: Replaced all PartialContainer with AddPartial.
+
+ * decls.cs (MemberCore.DocComment): Introduced new property as is used by
+ partial classed to accumulate class comments.
+ (MemberCore.GetClsCompliantAttributeValue): Moved from TypeContainer.
+
+ * doc.cs (GenerateTypeDocComment): Partial classes clean up.
+
+ * driver.cs (MainDriver): Tree.GetDecl was removed.
+
+ * modifiers.cs (Modifiers): Add partial modifier.
+
+ * tree.cs (Tree.decl): Removed.
+ (RootTypes): Started to use this class more often for root types
+ specializations.
+
+2006-03-23 Raja R Harinath <rharinath@novell.com>
+
+ * generic.cs (TypeParameter.UpdateConstraints): Update
+ 'constraints' if null.
+
+2006-02-22 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #77615
+
+ * attribute.cs (AttributeTester.GetCoClassAttribute): Don't crash when
+ external interface does not have an attribute.
+
+2006-02-22 Marek Safar <marek.safar@seznam.cz>
+
+ Another prerequisites for new partial classs implementation.
+
+ * attribute.cs (Attribute.Equal): Implemented.
+ (Attribute.Emit): Changed as attributes can be applied more than twice.
+ (Attributes.Emit): Check for duplicate attributes here.
+
+ * class.cs, decl.cs, delegate.cs, doc.cs, enum.cs: Don't pass DeclSpace
+ as a parameter, clean-up.
+
+2006-02-11 Marek Safar <marek.safar@seznam.cz>
+
+ A fix for #77485
+
+ * class.cs (TypeContainer.DefineType): Cannot use ResolveType because it
+ contains obsolete attribute check which can in some cases look for base
+ type of current class which is not initialized yet.
+ (TypeContainer.BaseType): Replacement of ptype.
+
+ * decl.cs (MemberCore.CheckObsoleteType): Reuse existing code.
+
+2006-02-11 Marek Safar <marek.safar@seznam.cz>
+
+ First of prerequisites for new partial classs implemention.
+
+ * attribute.cs (Attributable): Extended by ResolveContext;
+ Attributes finally have correct context for resolving in all cases.
+ (AttachTo): Attribute owner is assigned here.
+
+ * codegen.cs (IResolveContext): Introduce new interface to hold
+ all information needed in resolving phase.
+ (EmitContext): Implements IResolveContext; more clean-up needed here.
+
+ * decl.cs (MemberCore): Implemented IResolveContext.
+
+ * anonymous.cs, attribute.cs, class.cs, codegen.cs, const.cs,
+ decl.cs, ecore.cs, enum.cs, expression.cs, iterators.cs, namespace.cs,
+ parameter.cs, statement.cs, tree.cs, typemanager.cs:
+ Refactored to use new IResolveContext instead of EmitContext; cleanup
+
+2006-03-22 Raja R Harinath <rharinath@novell.com>
+
+ Support ParameterDefaultValueAttribute in gmcs. Also applied to
+ mcs to keep code differences small.
+ * attribute.cs (Attribute.GetParameterDefaultValue): New.
+ * typemanager.cs (parameter_default_value_attribute_type): New.
+ * parameter.cs (Parameter.ApplyAttributeBuilder): Use them. Add
+ CS1908 check.
+
+2006-03-22 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (Nullable.NullableLiteral): Derive from `NullLiteral'.
+
+ * convert.cs
+ (Convert.TypeParameter_to_Null): Create a `Nullable.NullableLiteral'
+ instead of the normal `NullLiteral'.
+
+2006-03-21 Martin Baulig <martin@ximian.com>
+
+ Fix #77583.
+ * generic.cs (TypeManager.InferType): If `pt' is a generic
+ parameter, don't check whether `pt == at'.
+
+2006-03-20 Raja R Harinath <rharinath@novell.com>
+
+ Fix #77852
+ * generic.cs (Constraints.Resolve): Change argument to IResolveContext.
+ (TypeParameter.Resolve): Update to change.
+ (ConstraintChecker.CheckConstraints): Resolve type-argument
+ constraints before use.
+
+2006-03-16 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (ConstraintChecker.HasDefaultConstructor): If we're a TypeBuilder
+ and don't have any instance constructors, also lookup in the base class.
+ (TypeManager.IsNullableValueType): New public method.
+
+ * typemanager.cs (TypeManager.MemberLookup_FindMembers): Clear the
+ `BindingFlags.DeclaredOnly' flag and set `used_cache'.
+ (TypeManager.TryGetBaseDefinition): Use DropGenericMethodArguments().
+
+ * expression.cs (Unary.DoResolve): Use TypeManager.IsNullableValueType()
+ instead of just TypeManager.IsNullableType() to determine whether
+ a lifted operator exists.
+ (UnaryMutator.DoResolve): Likewise.
+ (Conditional.DoResolve): Likewise.
+ (Binary.DoResolve): A lifted operator only exists if both operands
+ are valuetypes and at least one of them is a nullable type.
+
+2006-03-14 Atsushi Enomoto <atsushi@ximian.com>
+
+ * iterator.cs : yield break is allowed in try statement which has
+ catch clauses. Fixed bug #77767.
+
+2006-03-12 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs (TypeManager.ArrayContainsMethod): Use a new
+ private IsSignatureEqual() to compare types; see the comment in
+ that method; fixes #77674.
+
+2006-03-10 Raja R Harinath <rharinath@novell.com>
+
+ * ecore.cs (Expression.ResolveAsTypeStep): Remove 1-argument wrapper.
+ (Expression.ResolveAsTypeTerminal): Likewise.
+ * class.cs, decl.cs, delegate.cs, ecore.cs: Update to changes.
+ * expression.cs, generic.cs, iterators.cs: Likewise.
+ * parameter.cs, statement.cs, typemanager.cs: Likewise.
+
+2006-03-09 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (ConstraintChecker.HasDefaultConstructor): Call
+ TypeManager.DropGenericTypeArguments() on the `atype'; fixes #77548.
+
+2006-03-09 Martin Baulig <martin@ximian.com>
+
+ * ecore.cs (FieldExpr.AddressOf): Don't emit the instance if the
+ `prepared' flag is set.
+
+ * generic.cs (LiftedBinaryOperator): Don't allow `||' or `&&' anymore.
+ (LiftedBinaryOperator, LiftedUnaryMutator): Fix a few nullable
+ issues; see gtest-254.cs.
+
+2006-03-07 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (TypeManager.InferType): Allow infering
+ `IEnumerable<T>' with an array of T; see gtest-251.cs.
+
+2006-03-06 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (TypeManager.InferType): Fix gtest-250.cs.
+
+ * typemanager.cs
+ (TypeManager.IsSubclassOf): Also check the base class.
+
+ * expression.cs
+ (Invocation.IsAncestralType): Use TypeManager.IsSubclassOf();
+ fixes gtest-249.cs.
+
+2006-03-01 Raja R Harinath <rharinath@novell.com>
+
+ Fix #77679.
+ * expression.cs (ParameterReference.DoResolveBase): Change return
+ type to bool.
+ (ParameterReference.DoResolve, ParameterReference.DoResolveLValue):
+ Update.
+
+ Fix #77628.
+ * ecore.cs (PropertyExpr.InstanceResolve): Fix CS1540 check.
+
+ Fix #77642.
+ * typemanager.cs (GetFullNameSignature): Don't nullref on
+ protected accessors.
+
+2006-02-16 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (TypeManager.GetGenericFieldDefinition): New public method; use it
+ instead of the `FieldInfo.Mono_GetGenericFieldDefinition()' icall.
+
+2006-02-14 Martin Baulig <martin@ximian.com>
+
+ * *.cs: Use `Type.IsGenericType' instead of `Type.IsGenericInstance'.
+
+2006-02-14 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (TypeManager.DropGenericMethodArguments): New public method; don't
+ use GetGenericMethodDefinition() on something which is not a
+ generic method.
+
+2006-02-14 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (ConstraintChecker.CheckConstraints): If a type parameter has the
+ `struct' constraint, the type must be a non-nullable valuetype.
+
+2006-02-10 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs
+ (TypeManager.IsOverride): Make this work for instantiated methods
+ in a generic class; fixes #77509.
+ (TypeManager.ExpandInterfaces): Use TypeManager.GetInterfaces()
+ rather than calling it directly; fixes #77488.
+
+2006-02-08 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (ConstraintChecker.CheckConstraints): Move the error
+ reporting into CheckConstraint() so we can use the correctly
+ instantiated type.
+
+2006-02-08 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (BaseAccess): Add support for generic methods.
+
+ * ecore.cs (MethodGroupExpr.ResolveGeneric): Propagate `IsBase' to
+ the new MethodGroupExpr.
+
+2006-02-07 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (ConstraintChecker.CheckConstraints): Interfaces are
+ also reference types; fixes #77483.
+
+2006-02-07 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (TypeManager.IsGenericMethod): We now return whether something is
+ an instantiated generic method (and not a generic method def).
+ (TypeManager.IsGenericMethodDefinition): New public method.
+
+ * typemanager.cs
+ (TypeManager.CSharpSignature): Only include type arguments for
+ "real" generic methods, not for any instantiated method.
+ (TypeManager.GetMethodName): Likewise, but also allow generic
+ method definitions here.
+
+2006-02-06 Miguel de Icaza <miguel@novell.com>
+
+ * codegen.cs (EmitScopeInitFromBlock): check here the
+ capture_context, there is no need to make two calls to the
+ EmitContext.
+
+ * anonymous.cs: Add some debugging messages that might help me
+ track other instances of this problem in the future (the
+ regression of test 467).
+
+ * cs-parser.jay: track the variable block, as we need to initalize
+ any captured variables declared in this block for the "catch"
+ portion of the "Try" statement.
+
+ * statement.cs (Try.Emit): If the "Catch" has a VarBlock, emit any
+ scope initialization for captured variables.
+
+ Also, move the emit for the variables after the block location has
+ been marked.
+
+2006-02-06 Marek Safar <marek.safar@seznam.cz>
+
+ * ecore.cs (PropertyExpr.FindAccessors): Just made flags const.
+
+2006-02-06 Martin Baulig <martin@ximian.com>
+
+ * class.cs (TypeContainer.DefineType): If we're a struct, pass
+ `TypeManager.value_type' as parent type to
+ ModuleBuilder.DefineType(). Fixes #77358.
+
+2006-02-02 Miguel de Icaza <miguel@novell.com>
+
+ * anonymous.cs (CaptureContext.EmitInitScope): I was wrong in the
+ commit yesterday, the initialization for the roots is necessary.
+ What is not necessary is the scope activation.
+
+2006-02-02 Raja R Harinath <rharinath@novell.com>
+
+ * ecore.cs (PropertyExpr.DoResolveLValue): Add CS0206 check.
+ * expression.cs (IndexerAccess.DoResolveLValue): Add CS1612 and
+ CS0206 checks.
+ (Argument.Resolve): Remove CS0206 checks.
+
+2006-02-01 Miguel de Icaza <miguel@novell.com>
+
+ * anonymous.cs (CaptureContext.EmitInitScope): Do not emit the
+ scopes for all the roots, the scopes will now be emitted when the
+ Blocks are entered. [This change was wrong, fixed on 2006-02-02]
+
+ (CaptureContext.EmitScopeInitFromBlock): Simply emit the ScopeInfo
+ code. This reduces a lot of existing cruft.
+
+ * statement.cs (Block.Emit): Call EmitScopeInitFromBlock here, so
+ that the ScopeInfo is generated as we enter the scope, not at the
+ time of use, which is what we used to do before.
+
+ * codegen.cs (EmitScopeInitFromBlock): New routine, this is called
+ every time a Block is about to be emitted if we have a
+ CaptureContext.
+
+2006-02-01 Raja R Harinath <rharinath@novell.com>
+
+ * codegen.cs (AssemblyClass.Emit): Emit RuntimeCompatibility
+ attribute for mscorlib too.
+
+ * typemanager.cs (NoTypes, NoTypeExprs): Remove.
+ (Reset): Update.
+ * *.cs: Use Type.EmptyTypes instead of TypeManager.NoTypes.
+
+ * typemanager.cs (cons_param_array_attribute): Make private.
+ (Reset): Set it to null.
+ (InitCoreHelpers): Don't initialize it.
+ (ConsParamArrayAttribute): New. Initialize it as needed.
+ * parameter.cs (ParamsParameter.ApplyAttribute): Update to change.
+
+2006-01-31 Miguel de Icaza <miguel@novell.com>
+
+ * expression.cs: There might be errors reported during the
+ selection of applicable methods. If there are errors, do not
+ continue execution as it will lead the compiler to crash.
+
+2006-01-30 Miguel de Icaza <miguel@novell.com>
+
+ * expression.cs: Member access is not allowed on anonymous
+ methods. Fixes #77402.
+
+2006-01-30 Raja R Harinath <rharinath@novell.com>
+
+ Fix #77401
+ * cs-parser.jay (VariableDeclaration): Don't set
+ current_array_type to null.
+ (field_declaration, event_declaration, declaration_statement):
+ Set it to null here.
+
+2006-01-29 Raja R Harinath <harinath@gmail.com>
+
+ Fix part of #77397
+ * generic.cs (TypeManager.IsEqual): Handle pass-by-ref types.
+
+2006-01-28 Raja R Harinath <harinath@gmail.com>
+
+ * typemanager.cs (GenericParameterPosition): New.
+ * doc.cs: Use it.
+
+2006-01-28 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs : To process "include" elements, first we should create
+ another list than XmlNodeList, because it could result in node
+ removal, which could result in that the XmlNodeList gives up
+ yielding next node.
+
+2006-01-25 Miguel de Icaza <miguel@novell.com>
+
+ * expression.cs: Introduce an error report that we were not
+ catching before. Gonzalo ran into it.
+
+2006-01-23 Miguel de Icaza <miguel@novell.com>
+
+ A fix for bug: #76957
+
+ * iterators.cs (MoveNextMethod.CreateMethodHost): call
+ ComputeMethodHost before creating the method, this is a new
+ requirement.
+
+ * anonymous.cs (AnonymousContainer): Now we track all the scopes
+ that this method references (RegisterScope). The actual scope
+ where the method is hosted is computed with the ComputeMethodHost
+ before we create the method.
+
+ Moved the Deepest routine here.
+
+ (AnonymousContainer.ComputeMethodHost): New routine used to
+ compute the proper ScopeInfo that will host the anonymous method.
+
+ (ScopeInfo): Deal with multiple roots. The problem was that we
+ did not have a unique root where all ScopeInfos could be hanged
+ from. Remove `topmost' ScopeInfo, and instead keep an arraylist
+ of roots.
+
+ Remove AdjustMethodScope which is now computed at the end. Remove
+ LinkScope which did a partial link, instead link all ScopeInfos
+ before code generation from the new "LinkScopes" routine.
+
+ Simplify all the Add* routines as they no longer need to maintain
+ the tree, they just need to record that they are using variables
+ from a ScopeInfo.
+
+ (IsAncestor, GetAncestorScopes, GetParentScope, LinkScope): New
+ routines to produce the forest of ScopeInfo trees.
+
+ * class.cs (TypeContainer.AppendMethod): This is just like
+ AddMethod, but ensures that an interface implementation method
+ (IEnumerable.XXX) is not inserted at the beginning of the queue of
+ methods, but at the end.
+
+ We use this functionality to ensure that the generated MoveNext
+ method in the iterator class is resolved/emitted before the
+ enumerator methods created.
+
+ This is required because the MoveNext method computes the right
+ ScopeInfo for the method. And the other methods will eventually
+ need to resolve and fetch information computed from the anonymous
+ method.
+
+
+2006-01-23 Raja R Harinath <rharinath@novell.com>
+
+ Improve implementation of section 14.4.2.2 (Better function member).
+ * expression.cs (Invocation.MoreSpecific): Compare all type
+ arguments before deciding if one type is more specific than
+ another. Handle array types too. Return the more specific type.
+ (Invocation.BetterFunction): Add more tie-breaking rules from
+ section 14.4.2.2. Perform "more specific" check after
+ other tie-breaking rules. Compare all parameter types before
+ choosing the "more specific" method.
+
+2006-01-21 Raja R Harinath <harinath@gmail.com>
+ Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+ Fix rest of #76995.
+ * namespace.cs (NamespaceEntry.UsingExternalAliases): Don't add to
+ the 'aliases' hash.
+ (NamespaceEntry.LookupAlias): Lookup 'extern_aliases' hash too.
+ (NamespaceEntry.VerifyUsing): Resolve external aliases too.
+
+2006-01-18 Martin Baulig <martin@ximian.com>
+
+ * class.cs (TypeContainer.AddToMemberContainer): Use
+ `symbol.MemberName.MethodName' instead of just `symbol.Name';
+ fixes #77124.
+
+2006-01-18 Martin Baulig <martin@ximian.com>
+
+ Fix #76417: a generic class may now have methods which may unify
+ for some type parameter substitutions.
+
+ * class.cs (Method.IsDuplicateImplementation): Don't report CS0408
+ for methods which may unify anymore.
+
+ * expression.cs (Invocation.MoreSpecific): New private static
+ method; checks whether one method is more specific than another
+ according to 14.4.2.2 of the spec.
+ (Invocation.BetterFunction): Implement the tie-breaking rules from
+ 14.4.2.2 of the spec: if two methods unify for some type parameter
+ substitution, we need to pick the more specific one.
+
+2006-01-18 Raja R Harinath <rharinath@novell.com>
+
+ Fix #76656, cs0231-2.cs.
+ * cs-parser.jay (formal_parameter_list): Make error case catch
+ more issues.
+ (parenthesized_expression_0): Add CS1026 check.
+ (invocation_expression): Remove unused { $$ = lexer.Location }.
+
+2006-01-17 Raja R Harinath <rharinath@novell.com>
+
+ Fix #76824.
+ * cs-parser.jay (statement_expression): Don't list out the
+ individual statement-expressions. Convert syntax error into
+ CS0201 check.
+
+2006-01-16 Raja R Harinath <rharinath@novell.com>
+
+ Fix #76874.
+ * ecore.cs (MemberAccess.CheckIntermediateModification): Remove.
+ (UnboxCast.DoResolveLValue): New. Move CS0445 check from
+ CheckIntermediateModification.
+ (FieldExpr.DoResolve): Add new two-argument version that
+ allows us to resolve the InstanceExpression as an lvalue.
+ The one-argument variant is now just a wrapper.
+ (FieldExpr.DoResolveLValue): Use two-argument DoResolve.
+ Resolve the lhs as an lvalue if the it has a value type.
+ (FieldExpr.AssignToReadonly): Move CS1648 and CS1650 checks
+ from Assign.DoResolve.
+ (PropertyExpr.InstanceResolve): Allow InstanceExpression to be
+ resolved as an lvalue.
+ (PropertyExpr.DoResolve): Update.
+ (PropertyExpr.DoResolveLValue): Resolve the lhs as an lvalue if it
+ has a value type. Move CS1612 check here from
+ CheckIntermediateModification.
+ * assign.cs (Assign.DoResolve): Remove CS1648 and CS1650 checks.
+ * expression.cs (EmptyExpression.OutAccess): New. Used as the
+ 'right_side' of a ResolveLValue on an 'out' argument.
+ (EmptyExpression.LValueMemberAccess): New. Used as the
+ 'right_side' of a propagated ResolveLValue on a value type.
+ (LocalVariableReference.DoResolveBase): Recognize
+ EmptyExpression.OutAccess and EmptyExpression.LValueMemberAccess.
+ Add CS1654 check.
+ (Argument.Resolve): Use EmptyExpression.OutAccess rather than
+ EmptyExpression.Null.
+
+2006-01-16 Atsushi Enomoto <atsushi@ximian.com>
+
+ * typemanager.cs : added IsGenericParameter(). In gmcs it returns
+ Type.IsGenericParameter(). Fixed bug #77183.
+ * doc.cs : it is now identical to doc.cs in mcs.
+
+2006-01-16 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (ConstraintChecker.CheckConstraint): Fix #77167.
+
+2006-01-16 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs (TypeManager.CSharpSignature): Make this work for
+ ctors; fixes #77250.
+
+2006-01-12 Miguel de Icaza <miguel@novell.com>
+
+ This fixes the problem where we used ldfld instead of ldflda to
+ load the "THIS" pointer on captured parameters, when THIS is a
+ value type. See bug #77205.
+
+ * iterators.cs (CapturedThisReference.Emit): Pass false to
+ EmitThis (we do not need the address).
+
+ * codegen.cs (EmitThis): it needs to know whether we need the
+ address of `this' or not. This is used by value types.
+
+ * expression.cs (This.AddressOf): Pass true to the EmitThis call,
+ every other call passes false.
+
+2006-01-12 Raja R Harinath <rharinath@novell.com>
+
+ Fix #77221.
+ * typemanager.cs (TryGetBaseDefinition): Rename from the mis-named
+ GetOverride.
+ * expression.cs (Invocation.OverloadResolve): Update.
+ (Invocation.DoResolve): Avoid double resolution of invocation.
+
+2006-01-11 Raja R Harinath <rharinath@novell.com>
+
+ Fix #77180.
+ * expression.cs (Unary.Emit): When in /checked+ mode, don't emit
+ unary negation of floating point types as 0-expr; negation cannot
+ overflow in floating point types.
+
+ Fix #77204.
+ * expression.cs (MemberAccess.DoResolve): Disallow the use of '.'
+ on operands of 'void' type.
+
+ Fix #77200.
+ * cfold.cs (BinaryFold): Implement folding of BinaryOr, BinaryAnd
+ and ExclusiveOr for boolean constants too.
+
+2006-01-12 Ben Maurer <bmaurer@andrew.cmu.edu>
+
+ * expression.cs: Fix Console.WriteLine ((this = x).foo);
+
+2006-01-12 Miguel de Icaza <miguel@novell.com>
+
+ * cs-tokenizer.cs (Position): New class used to save and restore
+ the position state in the tokenizer. Before this patch the save
+ and restore was not complete enough so the line and columns would
+ start to drift and the debugger and stack traces will get the
+ wrong data.
+
+2006-01-10 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (TypeParameter.InflateConstraints): New public method.
+
+ * iterators.cs (Iterator.DefineNestedTypes): Also inflate the
+ constraints; fixes #77042.
+
+2006-01-10 Martin Baulig <martin@ximian.com>
+
+ * anonymous.cs (ScopeInfo.EmitScopeType): Use the `CurrentType'
+ instead of the `TypeBuilder' for this "<>THIS" variable; fixes
+ #77061.
+
+2006-01-09 Raja R Harinath <rharinath@novell.com>
+
+ Fix #75636.
+ * expression.cs (Invocation.OverloadResolve): Replace reflected
+ override methods with their base virtual methods, rather than
+ skipping over them.
+ * typemanager.cs (TypeManager.GetOverride): New.
+
+2005-12-21 Miguel de Icaza <miguel@novell.com>
+
+ * driver.cs: Report the case of no source files and no -out:
+ argument provided.
+
+2005-12-20 Raja R Harinath <rharinath@novell.com>
+
+ Fix #77035.
+ * expression.cs (ComposedCast.GetSignatureForError): Define.
+
+2006-01-05 Jb Evain <jbevain@gmail.com>
+
+ * class.cs (Property.Define, Indexer.Define): do not tag the
+ properties as SpecialName | RTSpecialName.
+
+2006-01-04 Miguel de Icaza <miguel@novell.com>
+
+ * class.cs (MethodCore.IsDuplicateImplementation): This method was
+ doing a low-level comparission of parameter types. It was lacking
+ a check for __argslist.
+
+2005-12-30 Miguel de Icaza <miguel@novell.com>
+
+ * expression.cs (ParameterReference.DoResolveBase): Allow
+ reference parameters if they are local to this block.
+
+ This allows the ref and out parameters of a delegate to be used in
+ an anonymous method, for example:
+
+ delegate void set (out int x);
+
+ set s = delegate (out int x){
+ x = 0;
+ };
+
+ This is used by functionality introduced late in the C# language.
+
+ * anonymous.cs (AnonymousMethod.Compatible): Allow anonymous
+ method that take ref and out parameters.
+
+ Fixes #77119 which was a late change in the spec.
+
+2005-12-23 Miguel de Icaza <miguel@novell.com>
+
+ * anonymous.cs (ScopeInfo.LinkScope): Do not link the scope to its
+ parent if its the same scope. Fixes #77060.
+
+2005-12-22 Marek Safar <marek.safar@seznam.cz>
+
+ * expression.cs (ComposedCast.DoResolveAsTypeStep): Fixed wrong merge.
+
+2005-12-21 Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+ * codegen.cs (AssemblyClass.CheckInternalsVisibleAttribute): Generate
+ errors 1726 for strong named assemblies with InternalsVisibleToAttribute
+ that doesn't contain the full public key. This is a update of the
+ friend assemblies in .Net 2.0 release.
+
+2005-12-18 Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+ Fix #76995
+
+ * namespace.cs (NamespaceEntry): Add extern_aliases as a
+ ListDictionary, to contain the ExternAliasEntry entries (in
+ addition to the NamespaceEntry.aliases hashtable). This field is
+ shared between the original entry and its doppelganger (bodyless
+ copy of it).
+ (NamespaceEntry.UsingExternalAlias): Add the extern alias entry to
+ extern_aliases field.
+ (NamespaceEntry.Lookup): Move the IsImplicit check after the
+ lookup in extern_aliases.
+
+2005-12-16 Raja R Harinath <rharinath@novell.com>
+
+ Fix #77006.
+ * class.cs (TypeContainer.Mark_HasEquals): New.
+ (TypeContainer.Mark_HasGetHashCode): New.
+ (ClassPart): Override them.
+ (MethodCore.CheckBase): Use them instead of referring to Parent.Methods.
+
+ * generic.cs (GenericMethod.DefineMembers): Update to changes.
+ (TypeParameter.TypeParameter): Change type of 'parent' argument to
+ DeclSpace.
+
+ Fix #77008.
+ * enum.cs (EnumMember.EnumMember): Pass the parent_enum as the
+ 'parent' argument to the base constructor.
+
+ Remove all mention of TypeContainer from decl.cs.
+ * decl.cs (MemberCore.Parent): Change into a DeclSpace.
+ (MemberCore.MemberCore): Change type of 'parent' argument to DeclSpace.
+ (DeclSpace.DeclSpace): Likewise.
+ (DeclSpace.DefineMembers): Remove unused argument.
+ * cs-parser.jay (pop_current_class): Update to changes. Simplify
+ debugging check -- we don't care if the debug code throws an
+ InvalidCastException instead of an InternalErrorException.
+ * class.cs (TypeContainer.DefineMembers): Update to changes.
+ (TypeContainer.DoDefineMembers): Likewise.
+ (TypeContainer.GetMethods): Likewise.
+ (PropertyMember.Define): Likewise.
+ (MemberBase.Parent): New property that forwards to
+ MemberCore.Parent, but ensures that we get a TypeContainer.
+ * rootcontext.cs (RootContext.PopulateCoreType): Update to changes.
+ (RootContext.PopulateTypes): Likewise. Remove special case code
+ for !RootContext.StdLib: DefineMembers is idempotent.
+
+2005-12-13 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (Method.ApplyAttributeBuilder): Test out modifier properly.
+
+2005-12-11 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs : The search for referenced namespace was insufficient to
+ get global one as it used to do. Fixed bug #76965.
+
+2005-12-10 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs : check name in cref in the last phase that whether it is
+ namespace or not.
+
+2005-12-09 Atsushi Enomoto <atsushi@ximian.com>
+
+ * cs-tokenizer.cs : reverted the latest change: it somehow broke
+ Mono.C5.
+
+2005-12-09 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs : so it turned out that we cannot skip override check for
+ interface members. Fixed bug #76954.
+
+2005-12-09 Atsushi Enomoto <atsushi@ximian.com>
+
+ * cs-tokenizer.cs : fixed bug #75984:
+ - #warning and #error should not be handled when the source line
+ is disabled.
+ - #line is not checked strictly when the source line is disabled.
+ - #define and #undef is on the other hand checked strictly at any
+ state.
+
+2005-12-08 Atsushi Enomoto <atsushi@ximian.com>
+
+ * cs-tokenizer.cs : missing Location (actually, filename) in one of
+ CS1027 report.
+
+2005-12-15 Raja R Harinath <rharinath@novell.com>
+
+ * generic.cs (TypeManager.IsGeneric): Remove unused method.
+
+ * typemanager.cs (TypeManager.GetFullName): Rewrite to handle
+ nested types.
+
+2005-12-14 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs (TypeManager.GetFullName): Make this public;
+ `Type.Fullname' now never returns null.
+
+ * class.cs (Method.Define): Use TypeManager.GetFullName() for
+ explicit interface implementations; we're now using the same
+ naming convention than csc does.
+
+2005-12-14 Miguel de Icaza <miguel@novell.com>
+
+ * convert.cs (ExplicitConversionCore): Check the return value from
+ ExplicitConversionCore which can return null on failure. Fixes #76914
+
+2005-12-09 Raja R Harinath <rharinath@novell.com>
+
+ * anonymous.cs (AnonymousMethod.Compatible): Use IsGenericType
+ instead of IsGenericInstance.
+ * generic.cs (TypeManager.IsEqual): Likewise. Delete redundant
+ code that's now covered by the more general test.
+ * typemanager.cs (TypeManager.IsPrivateAccessible): Likewise.
+
+ * generic.cs (DropGenericTypeArguments): New. Captures the common
+ pattern: if (t.IsGenericInstance) t = t.GetGenericTypeDefinition ();
+ * attribute.cs, class.cs, decl.cs, ecore.cs: Use it.
+ * generic.cs, report.cs, typemanager.cs: Likewise.
+
+2005-12-08 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (TypeArguments.Resolve): Added CS1547 check.
+
+ * typemanager.cs (TypeManager.CSharpSignature): Include type
+ arguments in the signature of a generic method.
+
+2005-12-07 Martin Baulig <martin@ximian.com>
+
+ Add support for custom attributes on type parameters.
+
+ * cs-parser.jay (type_arguments): Added `opt_attributes'.
+
+ * generic.cs (TypeParameterName): New public class; we use this
+ instead of a `string' to store the name of a type parameter, so we
+ can also have `Attributes'.
+ (TypeArguments.GetDeclarations): Return a `TypeParameterName[]'
+ array instead of a `string[]' array.
+ (TypeParameter.ctor): We now also take an `Attributes' argument.
+ (TypeParameter.EmitAttributes): New public method; emit our
+ `OptAttributes' here.
+ (GenericMethod.EmitAttributes): New public method; emit the custom
+ attributes on all our type parameters.
+
+ * class.cs (TypeContainer.EmitType): Call EmitAttributes() on all
+ our type parameters.
+ (MethodData.Define): If we're a generic method, call
+ EmitAttributes() on it.
+
+2005-12-07 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (ConstraintChecker): New public abstract class; move the
+ constraint checking here from `ConstructedType' and also do
+ constraint checking for generic methods here.
+
+ * expression.cs (Invocation.OverloadResolve): Use
+ ConstraintChecker.CheckConstraints() if we resolved to a generic
+ method. Fix #76806.
+
+2005-12-05 Marek Safar <marek.safar@seznam.cz>
+
+ * attribute.cs (GlobalAttribute.ctor): Pass NamespaceEntry only.
+
+ * class.cs (EmitFieldInitializers): Simplified and fixed to work with
+ event initializers.
+ (FieldBase.EmitInitializer): Moved from TypeContainer and simplified.
+ (FieldBase.Initializer): Initializer is now optional.
+ (EventField.Define): Only event field can have initializer.
+
+ * codegen.cs (EmitContext): DeclSpace is not readonly (small hack).
+
+ * const.cs (Const): Reuse initializer.
+
+ * cs-parser.jay: Updated after FieldBase changes.
+ Added current_array_type to simplify array initializers.
+
+ * ecore.cs (NullCast.IsDefaultValue): Implemented.
+
+ * expression.cs, iterators.cs: Updated.
+
+ * namespace.cs (NamespaceEntry): Made UsingFound private.
+
+2005-12-05 Marek Safar <marek.safar@seznam.cz>
+
+ * parameterCollection.cs: Obsolete, removed.
+ * parser.cs: Obsolete, removed.
+
+2005-12-05 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #76849.
+ * class.cs (Constructor.Emit): Set obsolete checking for whole context.
+
+ * enum.cs (Enum.Define): Set obsolete context here.
+
+2005-12-05 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs :
+ - FindDocumentedMember() now expects 1) paramList as null
+ when "we don't have to check the number of parameters" and
+ 2) Type.EmptyTypes when "there is no arguments".
+ - Introduced FoundMember struct to hold the exact type which was
+ used to find the documented member (the above change broke
+ test-xml-044; it might be better just to use DeclaringType than
+ what MS does, like this change does, but it depends on usage.)
+
+2005-12-05 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs : documented member might be from DeclaringType for nested
+ types. Fixed bug #76782.
+
+2005-12-03 Ben Maurer <bmaurer@ximian.com>
+
+ * anonymous.cs: Have the param code handle leaving copies on the
+ stack etc. Allows anonymous params to take part in the assignment
+ code (++, +=, etc). Fixes bug #76550
+
+ * expression.cs: Handle the prepare_for_load/leave_copy by passing
+ it down to the anon code.
+
+ * iterators.cs: Use dummy var here
+
+ * codegen.cs: Handle new vars
+
+2005-12-01 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #76849.
+ * class.cs (MethodData.Define): Set proper Obsolete context.
+
+ * ecore.cs (FieldExpr.ResolveMemberAccess): Don't check [Obsolete] in
+ obsolete context.
+ (FieldExpr.DoResolve): Ditto.
+
+2005-12-01 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #76849.
+ * class.cs (MethodCore.DoDefineParameters): Test [Obsolete] only when
+ parent is not obsolete.
+
+2005-12-01 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs : (FindDocumentedMember) find parameterless members first
+ and get CS0419 in the early stage. Fixed first case of bug #76727.
+
+2005-11-30 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #76859.
+ * ecore.cs (Expression.ResolveAsConstant): Report constant error only when
+ no error was reported.
+
+ *expression.cs (Binary.DoResolve): left can be null.
+
+2005-12-06 Raja R Harinath <rharinath@novell.com>
+
+ * class.cs (MethodCore.CheckGenericOverride): Delete unused
+ abstract method and all overrides.
+ * support.cs (ParameterData.GenericConstraints): Delete.
+ (ReflectionParameters.type_params): Delete.
+ (ReflectionParameters.ReflectionParameters): Make private.
+ (ReflectionParameters.GetConstaints): New factory method.
+ * generic.cs (TypeParameterDefineType): Use it.
+ (TypeManager.GetTypeParameterConstraints): Likewise.
+
+2005-11-22 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #76783.
+ * class.cs (MethodData.Emit): Parameters should be labeled first.
+
+2005-11-21 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #76761.
+ * parameter.cs (Parameter.ApplyAttributeBuilder): Fixed `ref' detection.
+
+2005-11-18 Marek Safar <marek.safar@seznam.cz>
+
+ * attribute.cs (AreParametersCompliant): Moved to Parameter.
+
+ * class.cs (MethodCore): Parameter clean up.
+ (IMethodData): Added ParameterInfo.
+ (MethodData): Parameter clean up.
+ (Indexer.Define): Parameter clean up.
+
+ * anonymous.cs,
+ * codegen.cs,
+ * cs-parser.jay,
+ * decl.cs,
+ * doc.cs,
+ * ecore.cs,
+ * flowanalysis.cs,
+ * iterators.cs,
+ * pending.cs,
+ * statement.cs,
+ * typemanager.cs: Parameter clean up.
+
+ * delegate.cs (Define): Get rid of duplicated code.
+
+ * expression.cs (ParameterReference): Removed useless parameters
+ and simplified.
+ (Invocation): Ditto.
+
+ * parameter.cs (ParamsParameter): New class, params specialization.
+ (ArglistParameter): Attemp to separate arglist.
+ (Parameter): Refactored to be reusable and faster.
+ (Parameter.Modifier): Made understandable.
+ (Parameters): Changed to be used as a class for `this' assembly
+ parameters. Refactored to use new specialized classes.
+
+ * support.cs (ParameterData): Added Types property.
+ (InternalParameters): Deleted.
+
+2005-11-16 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs : the previous patch does not actually fix the bug.
+ PropertyInfo override check is now implemented and really fixed it.
+ * expression.cs : Invocation.IsAncestralType() is used from doc.cs.
+
+2005-11-16 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs : apply "override filter" also to properties.
+ Fixed bug #76730.
+
+2005-11-16 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs : renamed FindMembers() to FindMethodBase(). For interfaces,
+ no need to check overrides. For classes, omit those results from
+ interfaces since they must exist in the class. Fixed bug #76726.
+
+2005-11-15 Atsushi Enomoto <atsushi@ximian.com>
+
+ * typemanager.cs : (GetFullNameSignature) differentiate indexers
+ with different parameters. Fixed the second problem in #76685.
+
+2005-11-15 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs : (FindDocumentedMember) pass invocation_type as well (to
+ get expected 'protected' access in CheckValidFamilyAccess()).
+ Fixed bug #76692.
+
+2005-11-15 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs : (GenerateTypeDocComment) Fields could be FixedField.
+ Fixed bug #76705. CS1569 was incorrectly commented out.
+
+2005-11-23 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (Constraints.Define): Removed.
+ (TypeParameter.DefineConstraints): Removed.
+ (TypeParameter.DefineType): Call SetGenericParameterAttributes()
+ on the GenericTypeParameterBuilder here.
+
+2005-11-23 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs (TypeManager.GetProperty): Make this public.
+
+ * generic.cs (Nullable.NullableInfo.ctor): Use
+ TypeManager.GetProperty() rather than using reflection directly.
+
+2005-11-17 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (Indexers.GetIndexersForType): Added support for
+ generic parameters; fixes #76587.
+
+2005-11-17 Martin Baulig <martin@ximian.com>
+
+ * anonymous.cs
+ (CaptureContext.EmitMethodHostInstance): Use `Ldarg_0' if we
+ inherit the scope from our parent. Fixes #76653.
+
+2005-11-15 Martin Baulig <martin@ximian.com>
+
+ * anonymous.cs (ScopeInfo.ScopeType): New public field; use this
+ instead of `ScopeTypeBuilder' to refer to the "current" type.
+ (AnonymousMethod.CreateScopeType): Correctly create the helper
+ class if we're inside a generic type definition.
+
+2005-11-14 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs : use Invocation.IsOverride() to do real override check.
+ * expression.cs : made Invocation.IsOverride() internal.
+
+2005-11-14 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs : use TypeManager.FindMembers() instead of (possible)
+ TypeBuilder.FindMembers() and filter overriden base members out.
+ Fixed bug #76990.
+
+2005-11-13 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs : ref/out parameters are represented as '@' (instead of
+ '&' in type FullName). Fixed bug #76630 (additionally crefs).
+
+2005-11-13 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs : when there was no '.' in cref to methods in doc comment,
+ then parameters were missing in the output. Fixed bug #76691.
+
+2005-11-13 Atsushi Enomoto <atsushi@ximian.com>
+
+ * driver.cs : don't output docs when there is an error.
+ Fixed bug #76693.
+
+2005-11-13 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs :
+ Now it should detect indexers. Fixed primary concern in bug #76685.
+ Fixed CS0419 message to not show the identical member signature in
+ the message.
+
+2005-11-13 Atsushi Enomoto <atsushi@ximian.com>
+
+ * doc.cs : (FindDocumentedMember) use TypeManager.MemberLookup()
+ instead of Type.FindMembers() since it does not handle events.
+ Fixed bug #71604.
+
+2005-11-12 Gert Driesen <drieseng@users.sourceforge.net>
+
+ * codegen.cs: Fixed typo (speficied -> specified).
+
+2005-11-11 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #76369.
+ * doc.cs (FindDocumentedTypeNonArray): Don't resolve again.
+
+2005-11-11 Marek Safar <marek.safar@seznam.cz>
+
+ * attribute.cs: Changed error message.
+
+ * cs-tokenizer.cs: One more check.
+
+2005-11-10 Marek Safar <marek.safar@seznam.cz>
+
+ * statement.cs (Block.Resolve): Ignore empty statement.
+
+2005-11-10 Marek Safar <marek.safar@seznam.cz>
+
+ * report.cs: Made error/warning methods more strict to avoid
+ their misuse.
+
+ * anonymous.cs, attribute.cs, class.cs, codegen.cs, constant.cs,
+ convert.cs, cs-parser.jay, cs-tokenizer.cs, decl.cs, delegate.cs,
+ doc.cs, driver.cs, ecore.cs, expression.cs, location.cs,
+ namespace.cs, parameter.cs, statement.cs, typemanager.cs: Updated.
+
+2005-11-11 Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+ * codegen.cs (AssemblyClass.CheckInternalsVisibleAttribute):
+ Use the more explicit AssemblyName.FullName instead of
+ AssemblyName.Name to report errors.
+
+2005-11-11 Marek Safar <marek.safar@seznam.cz>
+
+ * attribute.cs, class.cs, cs-tokenizer.cs, parameter.cs: Sync
+ with mcs.
+
+2005-11-10 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs,
+ * convert.cs,
+ * cs-parser.jay,
+ * decl.cs,
+ * enum.cs,
+ * expression.cs,
+ * generic.cs,
+ * pending.cs,
+ * report.cs: Fixed error reporting and typos.
+
+ * generic.cs (TypeParameter.GetSignatureForError): New method.
+ (ConstructedType.GetSignatureForError): Instead of DeclarationName.
+
+ * typemanager.cs (GetFullName): Refactored.
+
+2005-11-08 Marek Safar <marek.safar@seznam.cz>
+
+ * attribute.cs (Attribute.GetCoClassAttributeValue): New method.
+ (AttributeTester.GetCoClassAttribute): Get CoClassAttribute.
+
+ * class.cs (TypeContainer.IsComImport): New property.
+ (Constructor.Define): Create proper ctor for ComImport types.
+
+ * expression.cs (New.CheckComImport): Fixed.
+
+2005-11-07 Miguel de Icaza <miguel@novell.com>
+
+ * anonymous.cs (CaptureContext.AddParameterToContext): The fact
+ that a parameter has been captured does not mean that we do not
+ have to do the rest of the processing. This fixes the second part
+ of #76592. If there was another anonymous method capturing
+ values in the past, the Scope would never be set for the second
+ method that captured the same parameter.
+
+ (CaptureContext.EmitAssignParameter): When `leave_copy' is passed,
+ properly manipulate the stack. Second part of fix for #76592.
+
+ * 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-11-07 Marek Safar <marek.safar@seznam.cz>
+
+ decl.cs (CurrentTypeParameters): Fixed to be public.
+
+2005-11-07 Marek Safar <marek.safar@seznam.cz>
+
+ generic.cs, rootcontext.cs: Removed NewConstraintAttribute.
+
+2005-11-07 Marek Safar <marek.safar@seznam.cz>
+
+ gmcs.exe.sources: Use CryptoConvert.cs from corlib.
+
+2005-11-05 Kornél Pál <kornelpal@hotmail.com>
+
+ * gmcs.exe.config: Updated runtime version to v2.0.50727 (2.0 RTM).
+
+2005-11-04 Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+ Add friend assembly access support.
+ * typemanager.cs: assembly_internals_vis_attrs
+ cache for friend assembly access.
+ (TypeManager.IsFriendAssembly): New method for
+ checking friend assembly access.
+ (TypeManager.Error_FriendAccessNameNotMatching): New
+ helper method.
+ (TypeManager.CompareKeyTokens): Likewise.
+ (TypeManager.Filter): Handle friend accessible
+ members.
+
+ * namespace.cs (RootNamespace.GetTypeInAssembly): Return
+ friend accessible types.
+
+ * ecore.cs (Expression.IsAccessorAccessible): Handle
+ friend accessible properties.
+
+ * decl.cs (DeclSpace.CheckAccessLevel): Handle friend
+ accessible types.
+
+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-25 Martin Baulig <martin@ximian.com>
+
+ * convert.cs (ImplicitTypeParameterConversion): Make base
+ interfaces actually work; fixes #76557.
+
+2005-10-25 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (GenericMethod.Define): Call TypeParameter.DefineConstraints() on
+ all the type parameters; fixes #76551.
+
+2005-10-25 Martin Baulig <martin@ximian.com>
+
+ Fix #76472.
+
+ * generic.cs
+ (GenericMethod.ctor): Added `Expression return_type' and
+ `Parameters parameters' arguments.
+ (GenericMethod.DefineType): Call ResolveAsTypeTerminal() on the
+ parameter and return types to check their constraints if they're
+ generic types.
+
+ * codegen.cs (EmitContext.ResolvingGenericMethod): New public
+ boolean field.
+
+ * ecore.cs (Expression.ResolveAsTypeTerminal): Don't check the
+ constraints of a generic type if `ec.ResolvingGenericMethod'.
+
+ * class.cs (MethodCore.DoDefineParameters): Set
+ `ec.ResolvingGenericMethod' if we're a generic method.
+ (MemberBase.MemberType): Likewise.
+
+2005-10-25 Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+ * typemanager.cs (TypeManager): Added
+ TypeManager.internals_visible_attr_type to cache
+ S.R.CompilerServices.InternalsVisibleToAttribute.
+
+ * codegen.cs (AssemblyClass): Added checks for
+ InternalsVisibleToAttribute in new method
+ CheckInternalsVisibleAttribute () and also cache the
+ AssemblyName in AssemblyClass.Name.
+
+2005-10-24 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs
+ (TypeManager.ExpandInterfaces): Added overloaded version which
+ just takes a `Type[]' array.
+
+ * generic.cs
+ (Constraints.Resolve): Don't expand the interfaces here; ie. we
+ just use the interfaces which were explicitly specified and not
+ the interfaces they inherit. Fixes #76482.
+ (TypeParameter.FindMembers): Expand the interfaces here.
+
+2005-10-21 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (Constraints.Resolve): Also resolve the actual types here.
+ (Constraints.ResolveTypes): Just check the constraints here.
+ Fixes #76363; see gtest-218.cs.
+
+2005-10-21 Martin Baulig <martin@ximian.com>
+
+ * convert.cs
+ (Convert.ImplicitTypeParameterConversion): Use a `ClassCast'
+ instead of a `BoxedCast'; fixes gtest-217.cs.
+
+2005-10-20 Atsushi Enomoto <atsushi@ximian.com>
+
+ * generic.cs : (ConstructedType.CheckConstraints) warn CS0310 when
+ 1) "new()" is specified as generic parameter constraint and 2) the
+ type is TypeBuilder and 3) the type is abstract even if it has a
+ default .ctor(). Now errors/gcs0310-3.cs is correctly rejected.
+
+2005-10-20 Martin Baulig <martin@ximian.com>
+
+ * generic.cs
+ (GenericConstraints.TypeParameter): New public property.
+ (TypeParameter.ctor): Also take a `DeclSpace' argument.
+ (TypeParameter.DeclSpace): New public property.
+ (TypeParameter.DefineType): Inflate the constraints if our
+ `DeclSpace' is an `Iterator'.
+
+2005-10-19 Atsushi Enomoto <atsushi@ximian.com>
+
+ * class.cs, decl.cs : (MemberCache.FindMemberToOverride) added
+ GenericMethod argument to compare methods' generic type arguments.
+ Fixed bug #76382.
+
+2005-10-19 Martin Baulig <martin@ximian.com>
+
+ * class.cs (TypeContainer.DefineType): Only use ResolveAsTypeStep(),
+ not ResolveType() when resolving the base type, so we're not
+ checking the constraints here.
+ (TypeContainer.ResolveType): Call ResolveType() on our base_type
+ if we have any.
+
+2005-10-19 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (ConstructedType.CheckConstraints): Committing
+ untested fix for #76441.
+
+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-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-11 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #76370.
+ * convert.cs (ExplicitConversionCore): Fixed object->enum
+ conversion.
+
+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-06 Raja R Harinath <rharinath@novell.com>
+
+ Fix gtest-131.cs and gtest-211.cs.
+ * generic.cs (Nullable.LiftedBinaryOperator.EmitEquality):
+ Only emit code for a label if it is used. Unreachable code can
+ violate ECMA evaluation stack invariants.
+
+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-10-01 Miguel de Icaza <miguel@novell.com>
+
+ * expression.cs (Probe): instead of having a "Type probe_type"
+ keep the extra information as a TypeExpr probe_type_expr since the
+ "As" operator needs to perform some type checks.
+
+ * (As.DoResolve): If the type is a type parameter, ensure that it
+ is constrained by a class.
+
+2005-09-22 Miguel de Icaza <miguel@novell.com>
+
+ * statement.cs (Lock): Use the TemporaryVariable class instead of
+ manually using local variables as those do not work when variables
+ are captured.
+
+ * ecore.cs: Moved the TemporaryVariable class from being a nested
+ class inside Foreach to be a public class that can be employed in
+ other places.
+
+2005-09-19 Marek Safar <marek.safar@seznam.cz>
+
+ * cs-parser.jay: interface_accessors replaced by
+ accessor_declarations.
+
+ * ecore.cs, literal.cs, statement.cs: NullLiteral holds null
+ location.
+
+ * statement.cs (GotoCase.Resolve): Convert null constant to
+ null case.
+ (SwitchLabel.ResolveAndReduce): Ditto.
+ (SwitchLabel.NullStringCase): Custom null stamp.
+ (Switch.SimpleSwitchEmit): Fix from NullLiteral to NullStringCase.
+
+ typemanager.cs (CSharpSignature): Don't skip first argument
+ for full names.
+
+2005-09-16 Marek Safar <marek.safar@seznam.cz>
+
+ * cfold.cs, constant.cs, convert.cs, ecore.cs,
+ expression.cs, iterators.cs, literal.cs: Store constants and
+ literals location.
+
+ * class.cs (MemberBase.ShortName): Pass location.
+
+ * cs-parser.jay: Some location fixes.
+
+ * ecore.cs (Expression.Location): Made virtual.
+
+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-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-05 Miguel de Icaza <miguel@novell.com>
+
+ * expression.cs (Cast.TryReduce): Only reduce to an EnumConstant
+ if the underlying types are the same, otherwise we need to produce
+ code that will do the proper cast.
+
+ This was exposed by Marek's constant rewrite which produced
+ invalid code for the call site:
+
+ enum X : long { a }
+ void Method (X v) {}
+
+ Method ((X) 5)
+
+ This fixes test-49.cs
+
+2005-09-05 Atsushi Enomoto <atsushi@ximian.com>
+
+ * attribute.cs : (Attribute.IsValidArgumentType): array of string/
+ Type/Object should be allowed as well. Fixed bug #75968.
+
+2005-09-05 Atsushi Enomoto <atsushi@ximian.com>
+
+ * expression.cs : (Binary.DoResolve): when one is enum constant and
+ another is constant 0, then return enum one *as enum type*.
+ Fixed bug 74846.
+
+2005-10-04 Martin Baulig <martin@ximian.com>
+
+ * ecore.cs (PropertyExpr.ResolveAccessors): Cosmetic fix; make the
+ `SetMemberIsUsed()' work for generics, too.
+
+2005-10-04 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (DelegateInvocation.EmitStatement): Make this work
+ for corlib. Fixes #75691.
+
+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-18 Miguel de Icaza <miguel@novell.com>
+
+ * driver.cs: Set InEmacs based on the environment variable EMACS.
+
+ * location.cs (InEmacs): in this mode, do not report column
+ location as it confuses Emacs.
+
+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-22 Martin Baulig <martin@ximian.com>
+
+ * driver.cs: Removed a debugging FIXME.
+
+2005-09-21 Raja R Harinath <rharinath@novell.com>
+
+ * cs-parser.jay (type_arguments): Add CS1644 check.
+ * decl.cs (DeclSpace.AddToContainer): Restore CS0694 check.
+
+2005-09-15 Raja R Harinath <rharinath@novell.com>
+
+ * Makefile (PROGRAM): Make profile specific.
+ (gmcs.exe) [PROFILE=net_2_0]: Add utility rule to copy gmcs.exe to
+ the current directory.
+
+ Fix test-455.cs.
+ * expression.cs (Invocation.EmitCall): Remove optimization on
+ this_call since it doesn't handle 'this' being a value type.
+
+2005-09-05 Geoff Norton <gnorton@customerdna.com>
+
+ * driver.cs: Ensure file handles are closed after parsing
+
+2005-09-05 Miguel de Icaza <miguel@novell.com>
+
+ * expression.cs (Cast.TryReduce): Only reduce to an EnumConstant
+ if the underlying types are the same, otherwise we need to produce
+ code that will do the proper cast.
+
+ This was exposed by Marek's constant rewrite which produced
+ invalid code for the call site:
+
+ enum X : long { a }
+ void Method (X v) {}
+
+ Method ((X) 5)
+
+ This fixes test-49.cs
+
+2005-09-05 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (As.DoResolve): Use `probe_type.IsValueType'
+ instead of `TypeManager.IsValueType (probe_type)'; fixes #75668.
+
+ * cs-parser.jay (delegate_declaration): Small fix for #75852.
+
+2005-09-05 Atsushi Enomoto <atsushi@ximian.com>
+
+ * typemanager.cs: (IsUnmanagedType) : generic parameter is not allowed
+ to be a pointer type due to the spec 25.2, so check if declaring
+ type is generic type definition. Fixed bug #75772.
+
+2005-09-05 Atsushi Enomoto <atsushi@ximian.com>
+
+ Fixed bug #75957.
+ * generic.cs : (TypeManager.IsEqual(Type,Type)): it should work when
+ both types are not defined by methods.
+ * expression.cs : (Invocation.IsApplicable): it should work when
+ the argument type is equal to the parameter type, not only when
+ ImplicitConversionExists() returns true.
+
+2005-09-02 Raja R Harinath <rharinath@novell.com>
+
+ * attribute.cs (GetMarshal): Work even if "DefineCustom" is
+ internal.
+
+ Fix #75941.
+ * ecore.cs (SimpleNameResolve.DoSimpleNameResolve): Disable
+ flow-branching for LocalVariableReferences in case we were invoked
+ from a MemberAccess.
+ * expression.cs (LocalVariableReference.VerifyAssigned): New.
+ Carved out of ...
+ (LocalVariableReference.DoResolveBase): ... this.
+ (MemberAccess.Resolve): Do the check that was disabled during
+ SimpleNameResolve.
+
+2005-09-01 Atsushi Enomoto <atsushi@ximian.com>
+
+ * class.cs :
+ (PartialContainer.Create): check abstract/sealed/static strictly
+ but abstract/sealed can exist only at one side. Fixed bug #75883.
+
+2005-09-01 Kornél Pál <kornelpal@hotmail.com>
+
+ Fix #75945.
+ * attribute.cs (Attribute.GetMarshal): If ArraySubType is not
+ specified, don't default to UnmanagedType.I4.
+
+2005-09-01 Atsushi Enomoto <atsushi@ximian.com>
+
+ * expression.cs : conditional operator should check possibly
+ incorrect assign expression. Fixed bug #75946.
+
+2005-08-30 Raja R Harinath <rharinath@novell.com>
+
+ Fix #75934.
+ * anonymous.cs (ScopeInfo.MakeFieldName): New helper.
+ (ScopeInfo.EmitScopeType): Use it to construct field names from
+ names of captured locals.
+
+ Fix #75929.
+ * ecore.cs (BoxedCast.BoxedCast) [1-argument variant]: Remove.
+ * convert.cs (ImplicitReferenceConversion, TryImplicitIntConversion):
+ Pass 'target_type' to BoxedCast. Don't default to 'object'.
+ (ExplicitConversion): Remove enum cases already handled by
+ implicit conversion. Move implicit conversion check to the beginning.
+ * delegate.cs (DelegateCreation.ResolveMethodGroupExpr): Update.
+ * expression.cs (ArrayCreation.EmitDynamicInitializers):
+ Don't treat System.Enum as a struct.
+
+2005-08-30 Jb Evain <jbevain@gmail.com>
+
+ * attribute.cs: handles as expression in parameters.
+
+2005-08-30 Raja R Harinath <rharinath@novell.com>
+
+ Fix #75802.
+ * class.cs (TypeContainer.VerifyClsName): Don't use a
+ PartialContainer when verifying CLS compliance.
+ (AbstractPropertyEventMethod): Set Parent here, ...
+ (PropertyMethod): ... not here.
+
+2005-08-30 Atsushi Enomoto <atsushi@ximian.com>
+
+ * attribute.cs : escaped attribute name should not be allowed to be
+ resolved (e.g. @class as classAttribute). Fixed bug #75930.
+
+2005-08-29 Raja R Harinath <rharinath@novell.com>
+
+ Fix #75927.
+ * convert.cs (ImplicitStandardConversionExists): Allow zero also
+ when converting a long constant to unsigned long.
+ * expression.cs (Invocation.OverloadResolve): Add sanity check to
+ detect where IsApplicable and VerifyArgumentsCompat disagree.
+
+2005-08-29 Raja R Harinath <rharinath@novell.com>
+ and Carlos Alberto Cortez <carlos@unixmexico.org>
+
+ Fix #75848.
+ * class.cs (TypeContainer.CanElideInitializer): New helper.
+ (TypeContainer.EmitFieldInitializers): Use it to determine if we
+ can safely emitting the initializer of a field.
+
+2005-08-25 Atsushi Enomoto <atsushi@ximian.com>
+
+ * statement.cs : (Continue.Resolve()) Unlike break, continue is not
+ allowed inside a switch (without loop). Fixed bug #75433.
+
+2005-08-26 Kornél Pál <kornelpal@hotmail.com>
+
+ * AssemblyInfo.cs: Using Consts.MonoVersion instead of MonoVersion.cs.
+ * mcs.exe.sources: Using Consts.MonoVersion instead of MonoVersion.cs.
+
+2005-08-25 Atsushi Enomoto <atsushi@ximian.com>
+
+ * driver.cs : kinda reverting the default encoding changes (not exact
+ revert since I noticed that "codepage:reset" might not work fine).
+
+2005-08-25 Atsushi Enomoto <atsushi@ximian.com>
+
+ * class.cs : (AbstractPropertyEventMethod) SetupName() now takes
+ Location. Now getter and setter store location correctly.
+ (errors/cs0111-12.cs now reports the expected location.)
+
+2005-08-25 Atsushi Enomoto <atsushi@ximian.com>
+
+ * driver.cs : Use default encoding on the environment.
+ Removed (now that) extra parameter for SeekableStreamReader.
+ * support.cs : (SeekableStreamReader) third .ctor() argument for
+ StreamReader is not required (always true). preamble size could
+ be acquired in simpler and safe way.
+
+2005-08-24 Atsushi Enomoto <atsushi@ximian.com>
+
+ * cs-parser.jay: report CS0642 at warning level 3
+ and report CS0642 for an if else statement also
+ fixes bug #74745. Patch by John Luke (and a bit
+ modified by me).
+ Removed extra CS0642 warning check for "while",
+ "for" and "fixed".
+ * statement.cs: In Block.Resolve(), CS0642 check
+ is reimplemented to check a sequence of an empty
+ statement and a block.
+
+ Both fix bug #66777.
+
+2005-08-24 Marek Safar <marek.safar@seznam.cz>
+
+ * attribute.cs (GetMethodObsoleteAttribute): Disabled obsolete properties
+ detection until I fix it.
+
+ * cs-tokenizer.cs: Changed error message.
+
+ * cs-parser.jay: Fixed 2 error locations.
+
+ * ecore.cs (Error_TypeDoesNotContainDefinition): Share error message.
+ (PropertyExpr.Error_PropertyNotFound): First attempt to detect non C#
+ properties.
+
+ * enum.cs (GetSignatureForError): Fixed.
+
+ * expression.cs (Invocation.IsSpecialMethodInvocation): Improved special
+ method detection.
+
+ * class.cs,
+ * typemanager.cs (RegisterProperty): Removed.
+
+ * statement.cs (CheckInvariantMeaningInBlock): Changed error message.
+
+2005-08-24 Raja R Harinath <rharinath@novell.com>
+
+ Fix #75874.
+ * expression.cs (ArrayAccess.EmitLoadOpcode): Emit ldelem.i for pointers.
+ (ArrayAccess.GetStoreOpcode): Return stelem.i for pointers.
+
+2005-08-23 Atsushi Enomoto <atsushi@ximian.com>
+
+ * expression.cs : tiny fix is required for not warning positive ulong.
+ See test-441.cs.
+
+2005-08-23 Atsushi Enomoto <atsushi@ximian.com>
+
+ * expression.cs : add CS0652 check for constant and integral
+ expression. Fixed bug #53974.
+
+2005-08-23 Atsushi Enomoto <atsushi@ximian.com>
+
+ * expression.cs : in DoNumericPromotions(), check if there is implicit
+ conversion overload for string (to check CS0034). Fixed bug #52492.
+
+2005-08-23 Atsushi Enomoto <atsushi@ximian.com>
+
+ * cs-tokenizer.cs : Check newline in char constant. Fixed bug #75245.
+
+2005-08-23 Atsushi Enomoto <atsushi@ximian.com>
+
+ * ecore.cs : report location when it is *not* Null.
+
+2005-08-23 Atsushi Enomoto <atsushi@ximian.com>
+
+ * codegen.cs,
+ ecore.cs,
+ flowanalysis.cs,
+ expression.cs:
+ Added OmitStructFlowAnalysis to EmitContext to handle CS0165 check
+ correctly. Fixed bug #75721.
+
+2005-08-23 Raja R Harinath <rharinath@novell.com>
+
+ * support.cs (SeekableStreamReader.Position): Avoid an expensive
+ loop that performs 'min (pos, char_count)'.
+
+ Fix #75862.
+ * expression.cs (Unary.ResolveOperator): Don't discard implicit
+ converted value in Operator.OnesComplement.
+
+2005-08-22 Ben Maurer <bmaurer@ximian.com>
+
+ * anonymous.cs: If the anon method is pulled into a helper class,
+ it needs to be `internal' not `private'. Fixes runtime behavior on
+ msft. bug #75704
+
+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-09-02 Martin Baulig <martin@ximian.com>
+
+ * class.cs: Make CS3005 a warning, not an error.
+
+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
+ necessary.
+
+2005-07-29 Marek Safar <marek.safar@seznam.cz>
+
+ * statement.cs (SwitchLabel.ResolveAndReduce): Refactored.
+ (SwitchLabel.Erorr_AlreadyOccurs): Share error message.
+ (Switch.CheckSwitch): Just save 50kb for SWF.
+
+2005-07-27 Martin Baulig <martin@ximian.com>
+
+ * anonymous.cs (CaptureContext.AddField): Added
+ `AnonymousContainer am' argument; compute its toplevel scope if
+ it's not already computed. Fixes #75649.
+
+2005-07-26 Raja R Harinath <rharinath@novell.com>
+
+ Fix #75628.
+ * class.cs (Constructor.Emit): Reset block to null if the block
+ resolve fails.
+
+2005-07-25 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (TypeContainer.VerifyMembers): Be compatible in warning 169.
+
+2005-07-25 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (MethodData.Define): Check whether accessor implementing
+ interface is public.
+
+ * driver.cs (Driver.parse): Try to be smart and check for `MZ' header.
+
+2005-07-22 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #57245
+ * namespace.cs (LookupType): Moved same type check to...
+
+ * typemanager.cs (LookupTypeReflection): Don't allow to import more types
+ with the same name.
+
+2005-07-21 Raja R Harinath <rharinath@novell.com>
+
+ * namespace.cs (NamespaceLookupType): Avoid a string allocation when we
+ already found a typebuilder.
+ * class.cs (MethodCore.IsDuplicateImplementation): Compare
+ MemberNames, not strings.
+
+ * const.cs (Error_ExpressionMustBeConst):
+ Rename from Error_EpressionMustBeConst.
+ * const.cs, class.cs, statement.cd: Update.
+
+2005-07-21 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #65573
+
+ * const.cs (Const.LookupConstantValue): Report missing contant expression
+ everytime.
+ (Error_EpressionMustBeConstant): Only one error method.
+
+ * class.cs, statement.c: Updated.
+
+2005-07-20 Raja R Harinath <rharinath@novell.com>
+
+ * statement.cs (Block.Flags): Add back HasVarargs.
+ (Block.flags): Make protected.
+ (ToplevelBlock.HasVarargs): Convert to a property that updates flags.
+
+ * typemanager.cs (types, typecontainers, user_types): Remove.
+ (UserTypes, TypeContainers): Likewise.
+ (HandleDuplicate, AddDelegateType, AddEnumType): Likewise.
+ (CleanUp, Reset): Update.
+ (AddUserType): Combine variants. Now, only updates builder_to_declspace.
+ (GetNestedType): Use Type.GetNestedType.
+ (CoreLookupType): Take two arguments, the namespace and the
+ basename of the type. Update to use the Namespace.Lookup
+ mechanism.
+ (InitEnumUnderlyingTypes, InitCoreTypes): Update.
+ (RealMemberLookup): Use IsNestedChildOf instead of playing with
+ string concatenation and substring matches.
+ * class.cs, enum.cs, delegate.cs: Update to changes.
+
+2005-07-20 Marek Safar <marek.safar@seznam.cz>
+
+ * constant.cs (Constant.Error_ConstantValueCannotBeConverted): Moved from
+ Expression and made virtual.
+
+ * convert.cs (ImplicitReferenceConversionExists): Skip for value types.
+ (ImplicitStandardConversionExists): Fixed `byte' typo ?
+
+ * ecore.cs (Expression.Error_ConstantValueCannotBeConverted): Moved.
+
+ * literal.cs (NullLiteral.Error_ConstantValueCannotBeConverted): Customize
+ error message.
+
+ * convert.cs, ecore.cs, enum.cs: Reflect Error_ConstantValueCannotBeConverted
+ change.
+
+2005-07-18 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #57707
+ * codegen.cs (AssemblyClass.ApplyAttributeBuilder): Check whether
+ AssemblyCultureAttribute is not used on executable.
+
+ * rootcontext.cs,
+ * typemanager.cs: Add System.Reflection.AssemblyCultureAttribute.
+
+2005-07-16 Raja R Harinath <rharinath@novell.com>
+
+ Fix #60638.
+ * expression.cs (Binary.Warning_UnintendeReferenceComparison):
+ New. Reports CS0252/CS0253.
+ Mostly taken from preliminary patch by Duncak Mak.
+ (Binary.DoResolveOperator): Store results of operator lookup.
+ Use them to detect if we need to warn about unintended reference
+ comparisons.
+
+2005-07-15 Raja R Harinath <rharinath@novell.com>
+
+ Fix #72969.
+ * namespace.cs (Namespace.Lookup): Add back location parameter.
+ (Namespace.LookupType): Add CS0436 report. Add location parameter.
+ * delegate.cs, ecore.cs, expression.cs: Update to changes.
+
+ * codegen.cs (EmitContext.DeclSpace): Make readonly.
+ * namespace.cs (Namespace.Lookup): Carve out type lookup into ...
+ (Namespace.LookupType): ... this.
+ (NamespaceEntry.GetUsingTable): Allocate only one zero-sized array
+ of namespaces.
+ * typemanager.cs (LookupTypeReflection): Remove buggy code that
+ purported to handle pointers.
+ (char_ptr_type, void_ptr_type): Use GetPointerType rather than
+ CoreLookupType.
+
+2005-07-15 Marek Safar <marek.safar@seznam.cz>
+
+ * expression.cs (MemberAccess.ResolveNamespaceOrType): Don't report nested
+ type as namespace.
+
+2005-07-15 Raja R Harinath <rharinath@novell.com>
+
+ * namespace.cs (Namespace.Lookup): Drop location parameter.
+ (NamespaceEntry.LookupAlias): Remove. Merge into ...
+ (NamespaceEntry.Lookup): ... this.
+ (NamespaceEntry.Error_AmbiguousTypeReference):
+ Move here from DeclSpace.
+ (NamespaceEntry.LookupNamespaceOrType): Move support for dotted
+ names ...
+ * ecore.cs (TypeLookupExpression.DoResolveAsTypeStep): ... here.
+ * decl.cs (DeclSpace.ErrorAmbiguousTypeReference):
+ Move to NamespaceEntry.
+ * delegate.cs, expression.cs: Update to changes.
+
+2005-08-31 Martin Baulig <martin@ximian.com>
+
+ Committing a patch from Atsushi Enomoto for #75850.
+
+ * statement.cs (Foreach.CollectionForeach.GetEnumeratorFilter):
+ Prefer a generic enumerator over a non-generic one.
+
+2005-08-26 Kornél Pál <kornelpal@hotmail.com>
+
+ * AssemblyInfo.cs: Using Consts.MonoVersion instead of MonoVersion.cs.
+ * gmcs.exe.sources: Using Consts.MonoVersion instead of MonoVersion.cs.
+
+2005-08-25 Atsushi Enomoto <atsushi@ximian.com>
+
+ * driver.cs : reverting default encoding change as well as mcs.
+
+2005-08-25 Atsushi Enomoto <atsushi@ximian.com>
+
+ * driver.cs, support.cs : merged r48826.
+ Marek Safer wrote:
+ > could you integrate your mcs changes to gmcs otherwise
+ > gmcs cannot compile some files.
+
+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-07-31 Miguel de Icaza <miguel@novell.com>
+
+ * statement.cs: Copy the local exception into the exception
+ captured local. Fixes 75674
+
+2005-07-15 Marek Safar <marek.safar@seznam.cz>
+
+ * expression.cs (MemberAccess.ResolveNamespaceOrType): Don't report nested
+ type as namespace.
+
+2005-08-12 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (MemberAccess.ResolveNamespaceOrType): Only search
+ for nested types here to avoid hitting the cache too early.
+
+2005-08-09 Miguel de Icaza <miguel@novell.com>
+
+ * enum.cs: On the new compiler CLS error 3005 is now a warning not
+ an error.
+
+2005-08-03 Martin Baulig <martin@ximian.com>
+
+ Make iterators in generic methods work; see gtest-191.cs.
+
+ * generic.cs
+ (Constraints.Resolve): Protect against being called twice.
+
+ * class.cs
+ (TypeContainer.GetClassBases): Make this `protected virtual'.
+
+ * iterator.cs (Iterator.ctor): Added `GenericMethod' argument.
+ (Iterator.GetClassBases): Override this and compute the base
+ classes here.
+ (Iterator.DefineNestedTypes): If we're a generic method, all our
+ method type parameters become class type parameters on the proxy
+ class.
+
+ * statement.cs
+ (ToplevelBlock.Parameters): Make this a property, not a field.
+ (ToplevelBlock.ResolveMeta): Update the `parameters' from the `ip'.
+
+2005-08-03 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs (TypeManager.IsSubclassOf): Use
+ `TypeManager.IsEqual' instead of `Type.Equals'; fixes gtest-190.cs.
+ (TypeManager.GetFullName_recursed): Improved.
+
+2005-07-27 Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+ Fix #75417
+ * ecore.cs (Expression.IsAccessorAccessible): Change the check for
+ Private accessor case, using TypeManager.IsPrivateAccessible instead of
+ invocation_type == mi.DeclaringType, since the first one also checks
+ other condition used by generic instances.
+
+2005-07-27 Martin Baulig <martin@ximian.com>
+
+ * anonymous.cs (CaptureContext.AddField): Added
+ `AnonymousContainer am' argument; compute its toplevel scope if
+ it's not already computed. Fixes #75649.
+
+2005-07-14 Marek Safar <marek.safar@seznam.cz>
+
+ * attribute.cs (Attribute.ResolveAttributeType): Renamed from
+ CheckAttributeType and refactored.
+ (Attribute.ResolvePossibleAttributeType): Changed to reuse
+ ResolveAsTypeTerminal error handling.
+ (ResolveAsTypeTerminal): Introduced because of global attributes extra
+ handling.
+ (GetSignatureForError): Print errors in same way.
+
+ * class.cs,
+ * codegen.cs: Reflect attribute GetSignatureForError change.
+
+ * ecore.cs,
+ * expression.cs: Add silent parameter to ResolveAsTypeStep.
+
+ * namespace.cs (UsingEntry): Refactored to make fields private.
+
+ * assign.cs,
+ statement.cs: Error_UnexpectedKind has extra parameter.
+
+2005-07-14 Raja R Harinath <rharinath@novell.com>
+
+ * ecore.cs (IAlias): Remove.
+ * decl.cs (DeclSpace): Don't derive from IAlias. Remove members
+ that implement the interface.
+ * namespace.cs (Namespace): Likewise.
+ (Namespace.declspaces): Renamed from 'defined_names'.
+ (Namespace.AddDeclSpace): Renamed from 'DefineName'. Take a
+ DeclSpace instead of an IAlias.
+ * tree.cs (Tree.AddDecl): Update.
+
+2005-07-12 Raja R Harinath <rharinath@novell.com>
+
+ * statement.cs (Block.Flags); Remove HasVarargs.
+ (Block.HasVarargs): Move to ToplevelBlock.
+ (Block.ThisVariable, Block.AddThisVariable): Likewise.
+ (Block.Variables): Make protected. Initialize variable hashtable
+ if necessary.
+ (Block.AddVariable): Update.
+ (Block.Resolve): Update to changes.
+ (ToplevelBlock.HasVarargs): New boolean.
+ (ToplevelBlock.ThisVariable): Move here from Block.
+ (ToplevelBlock.AddThisVariable): Likewise.
+ (ToplevelBlock.IsThisAssigned): New. Forwards call to this_variable.
+ * expression.cs (This.ResolveBase): Update to changes.
+ (ArglistAccess.DoResolve): Likewise.
+
+2005-07-11 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #75321
+ * ecore.cs, class.cs: Use SetAssigned instead of direct access.
+
+ * class.cs (TypeContainer.VerifyMembers): Distinguish between
+ not used and not used & assigned.
+ (FieldBase.ASSIGNED): Moved to MemberCore.Flags.
+
+2005-07-11 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #75053
+ * expression.cs (Is.DoResolve): null is never provided type.
+
+2005-07-08 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #52496
+ * cs-parser.jay: Less strict event error rule to catch more errors.
+
+2005-07-11 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (ConstructedType.CheckConstraints): Improve the check
+ for the constructor constraint: we do not only have to check
+ whether the class has a public constructor, but also ensure that
+ it's parameterless. Fixes #75492.
+
+2005-07-11 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (Binary.ResolveOperator): Only allow `==' and `!='
+ between type parameters if they either have the reference type
+ constraint or the class constraint.
+
+2005-07-10 Kamil Skalski <nazgul@nemerle.org>
+
+ * generic.cs: Use MakeGenericType instead of BindGenericParameters.
+
+2005-07-07 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #74975
+ * attribute.cs (orig_sec_assembly): Holds original version of assembly.
+ (ExtractSecurityPermissionSet): Cope with self referencing security
+ attributes properly.
+
+ * driver.cs (SetOutputFile): Made public property OutputFile.
+
+2005-07-07 Raja R Harinath <rharinath@novell.com>
+
+ Fix #75486.
+ * class.cs (TypeContainer.first_nonstatic_field): Rename from
+ has_nonstatic_fields. Make into a FieldBase pointer.
+ (TypeContainer.AddField): Add CS0282 check.
+ (TypeContainer.EmitType): Update.
+
+2005-07-06 Miguel de Icaza <miguel@novell.com>
+
+ * cs-tokenizer.cs (consume_identifier): Do not create strings to
+ compare if they start with __.
+
+2005-07-06 Raja R Harinath <rharinath@novell.com>
+
+ * statement.cs (Switch.SwitchGoverningType): Only look at
+ UserCasts that don't need implicit standard conversions to one of
+ the allowed switch types (Fixes test-322.cs).
+ (LocalInfo.Resolve): Re-enable sanity-test.
+
+2005-07-06 Marek Safar <marek.safar@seznam.cz>
+
+ * cs-tokenizer.cs (consume_identifier): Detect double undescores
+
+ * ecore.cs (FieldExpr.AddressOf): Changed volatile error to warning.
+
+ * expression.cs (Invocation.DoResolve): Report error CS0245 here.
+
+2005-07-06 Raja R Harinath <rharinath@novell.com>
+
+ Fix #75472.
+ * ecore.cs (SimpleName.GetSignatureForError): Add.
+ * expression.cs (MemberAccess.DoResolve): Don't clobber 'expr' field.
+ (MemberAccess.GetSignatureForError): Add.
+
+2005-07-05 Marek Safar <marek.safar@seznam.cz>
+
+ The big error and warning messages review.
+
+ * anonymous.cs,
+ * assign.cs,
+ * attribute.cs,
+ * class.cs,
+ * codegen.cs,
+ * convert.cs,
+ * cs-parser.jay,
+ * cs-tokenizer.cs,
+ * decl.cs,
+ * delegate.cs,
+ * doc.cs,
+ * driver.cs,
+ * ecore.cs,
+ * enum.cs,
+ * expression.cs,
+ * flowanalysis.cs,
+ * iterators.cs,
+ * literal.cs,
+ * location.cs,
+ * modifiers.cs,
+ * namespace.cs,
+ * parameter.cs,
+ * pending.cs,
+ * report.cs,
+ * rootcontext.cs,
+ * statement.cs,
+ * support.cs,
+ * tree.cs,
+ * typemanager.cs: Updated.
+
+ * class.cs: (MethodCore.SetYields): Moved here to share.
+ (PropertyMethod.Define): Moved iterator setup here.
+
+ * iterators.cs: Add orig_method to have full access to parent
+ container.
+
+2005-07-05 Raja R Harinath <rharinath@novell.com>
+
+ Make 'fixed variable' handling standards compliant. Fix #70807, #72729.
+ * ecore.cs (IVariable.VerifyFixed): Remove 'is_expression' parameter.
+ (FieldExpr.VerifyFixed): Ensure that the field is part of a fixed
+ variable of struct type.
+ * expression.cs (Unary.ResolveOperator): Update to change.
+ (Indirection.VerifyFixed): Likewise.
+ (LocalVariableReference.VerifyFixed): A local variable is always fixed.
+ (ParameterReference.VerifyFixed): Value parameters are fixed.
+ (This.VerifyFixed): Treat 'this' as a value parameter.
+ * statement.cs (LocalInfo.IsFixed): Remove.
+
+2005-07-01 Martin Baulig <martin@ximian.com>
+
+ * iterators.cs (Iterator.CapturedThisReference.Emit): Use
+ `ec.EmitThis ()' to get the correct scope.
+
+2005-07-01 Martin Baulig <martin@ximian.com>
+
+ * ecore.cs (FieldExpr.DoResolve): Don't capture the field if it's
+ instance is a ParameterReference; fixes #75299.
+
+2005-06-30 Raja R Harinath <rharinath@novell.com>
+
+ Fix #75412.
+ * expression.cs (Indexers.map): Remove.
+ (Indexers.Append): Filter out inaccessible setters and getters.
+ (IndexerAccess.DoResolve, IndexerAccess.DoResolveLValue): Update.
+
+ Fix #75283.
+ * ecore.cs (MemberExpr.EmitInstance): New. Add CS0120 check.
+ Refactored from ...
+ (FieldExpr.EmitInstance, PropertyExpr.EmitInstance): ... these.
+ (FieldExpr.Emit, PropertyExpr.Emit): Update.
+ (FieldExpr.EmitAssign, PropertyExpr.EmitAssign): Update.
+ * expression.cs (Invocation.EmitCall): Add CS0120 check.
+
+2005-06-30 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #75322
+ * class.cs (FieldBase.GetInitializerExpression): One more field
+ for backup.
+
+2005-06-28 Miguel de Icaza <miguel@novell.com>
+
+ * pending.cs: Do not define a proxy if the base method is virtual,
+ it will be picked up by the runtime (bug 75270).
+
+2005-07-08 Martin Baulig <martin@ximian.com>
+
+ * anonymous.cs (CaptureContext.EmitParameterInstance): Correctly
+ handle parameters in nested scopes; fixes #74808; see gtest-188.cs.
+
+2005-07-07 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (ConstructedType.CheckConstraint): Use
+ ResolveAsTypeStep(), not ResolveAsTypeTerminal() so we're not
+ called recursively; fixes #75329.
+
+2005-07-06 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (TypeManager.InferTypeArguments): Added support for
+ anonymous methods; fixes #75461.
+
+2005-07-01 Martin Baulig <martin@ximian.com>
+
+ * iterators.cs (Iterator.CapturedThisReference.Emit): Use
+ `ec.EmitThis ()' to get the correct scope.
+
+2005-07-01 Martin Baulig <martin@ximian.com>
+
+ * ecore.cs (FieldExpr.DoResolve): Only capture the field if it's
+ instance is `This'; fixes #75299.
+
+2005-06-30 Martin Baulig <martin@ximian.com>
+
+ * class.cs (Indexer): Implement IIteratorContainer; added support
+ for iterators in indexers.
+
+ * codegen.cs
+ (EmitContext.CurrentIterator): Make this a property, not a field.
+
+ * anonymous.cs (AnonymousContainer.Iterator): New public property.
+
+2005-06-28 Miguel de Icaza <miguel@novell.com>
+
+ * pending.cs: Do not define a proxy if the base method is virtual,
+ it will be picked up by the runtime (bug 75270).
+
+2005-06-28 Martin Baulig <martin@ximian.com>
+
+ * cs-parser.jay (interface_method_declaration): Avoid a
+ reduce/reduce conflict by moving some of the code into a separate
+ `interface_method_declaration_body' rule; fixes #75368.
+
+2005-06-28 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs (TypeManager.MemberLookup_FindMembers): Move the
+ array check after the check for TypeBuilder's.
+
+2005-06-21 Raja R Harinath <rharinath@novell.com>
+
+ * convert.cs (FindMostEncompassedType): Add two trivial special
+ cases (number_of_types == 0 || number_of_types == 1).
+ (FindMostEncompasingType): Likewise.
+
+2005-06-17 Raja R Harinath <rharinath@novell.com>
+
+ Some cleanups preparing for the fix of #75283.
+ * ecore.cs (PropertyExpr.InstanceResolve): Tighten conditions for
+ error testing.
+ (EventExpr.InstanceResolve): Likewise.
+ (EventExpr.DoResolve): Remove redundant checks.
+
+2005-06-08 Miguel de Icaza <miguel@novell.com>
+
+ * class.cs: Small fix.
+
+2005-06-08 Raja R Harinath <rharinath@novell.com>
+
+ Fix #75160.
+ * class.cs (GetPartialBases): Fix return value check of
+ part.GetClassBases.
+
+2005-06-07 Raja R Harinath <rharinath@novell.com>
+
+ Ensure that partial classes are registered in their enclosing
+ namespace. Initial part of fix of #75160.
+ * tree.cs (Tree.RecordDecl): Add new namespace argument.
+ Register declspace with namespace here, not in
+ DeclSpace.RecordDecl.
+ * cs-parser.jay: Pass namespace to RecordDecl.
+ * class.cs (PartialContainer.Create): Likewise.
+ (ClassPart.DefineType): New sanity-check. Throws an exception if
+ called.
+ * decl.cs (Declspace.RecordDecl): Remove.
+ * namespace.cs (NamespaceEntry.DefineName): Remove.
+
+2005-06-06 Marek Safar <marek.safar@seznam.cz>
+
+ * rootcontext.cs: Reset TargetExt as well.
+
+2005-06-03 Raja R Harinath <rharinath@novell.com>
+
+ * ecore.cs (Expression.Resolve): Emit CS0654 error when
+ -langversion:ISO-1.
+
+2005-06-02 Raja R Harinath <rharinath@novell.com>
+
+ Fix #75080, cs0119.cs.
+ * ecore.cs (Expression.ExprClassToResolveFlags): New. Broken out
+ of ...
+ (Expression.Resolve): ... this. Use it. Remove bogus code
+ allowing ExprClass.Type and ExprClass.Namespace for
+ ResolveFlags.VariableOrValue.
+ (Expression.Resolve) [1-argument variant]: Change default resolve
+ flags based on language version.
+ (Expression.Error_UnexpectedKind): Use a simple string array
+ rather than an ArrayList.
+ * expression.cs (TypeOf.DoResolve): Set eclass to ExprClass.Value,
+ not ExprClass.Type.
+ (TypeOfVoid.DoResolve): Likewise.
+ (MemberAccess.DoResolve) [3-argument variant]: Make private. Drop
+ flags argument -- it always has the same value.
+
+2005-05-31 Raja R Harinath <rharinath@novell.com>
+
+ Fix #75081.
+ * ecore.cs (Expression.ResolveLValue): Add a Location parameter.
+ Use it in the error message.
+ * assign.cs, expression.cs, statement.cs: Update.
+
+2005-05-30 Raja R Harinath <rharinath@novell.com>
+
+ Fix #75088.
+ * ecore.cs (Expression.MemberLookupFailed): Add CS0122 check in
+ the "almostMatchedMember" case too.
+ * typemanager.cs (Closure.CheckValidFamilyAccess): Add anything
+ that failed the accessibility checks to 'almost_match'.
+
+2005-05-27 Vladimir Vukicevic <vladimir@pobox.com>
+
+ * attribute.cs: Use internal MethodBuilder methods to set
+ ExactSpelling and SetLastError on PInvoke methods, instead
+ of passing them via charset. Fixes #75060.
+
+2005-05-27 Raja R Harinath <rharinath@novell.com>
+
+ * parameter.cs (Parameter): Remove TODO comment.
+ (Parameter.DefineParameter): Remove Location parameter.
+ (Parameters.LabelParameters): Likewise.
+ * class.cs (Constructor.Emit): Update to change.
+ (MethodData.Emit): Likewise.
+ * anonymous.cs (AnonymousMethod.EmitMethod): Likewise.
+ * delegate.cs (Delegate.Define, Delegate.Emit): Likewise.
+
+2005-05-27 Atsushi Enomoto <atsushi@ximian.com>
+
+ * parameter.cs,
+ Removed Parameters.Location and added Parameter.Location instead.
+ Removed Location parameter from Emit() and GetSignature().
+ * anonymous.cs,
+ class.cs,
+ cs-parser.jay,
+ delegate.cs,
+ iterators.cs,
+ statement.cs :
+ Modified all related calls.
+
+2005-06-21 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (NullCoalescingOperator.Emit): Make this work if the
+ left-hand side is not a nullable type; fixes #75328.
+
+2005-06-21 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs
+ (TypeManager.CSharpName): Use GetFullName() instead of `t.FullName'.
+ (TypeManager.GetFullNameSignature): Likewise.
+
+ * convert.cs (Convert.Error_CannotImplicitConversion): Compare
+ `source.FullName' and `target.FullName' to check whether there are
+ two conflicting definitions.
+
+2005-06-21 Martin Baulig <martin@ximian.com>
+
+ * convert.cs (Convert.ImplicitTypeParameterConversion): Always use
+ a BoxedCast - also for reference types - to be compatible with csc.
+
+2005-06-21 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (MemberAccess.DoResolve): Add support for nested
+ types in a generic instance; fixes #75320.
+
+2005-06-20 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (TypeManager.InferType): Also walk the class
+ hierarchy for generic instances; fixes #75261.
+
+2005-06-17 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs (TypeManager.IsBuiltinType): Use TypeToCoreType()
+ to make things work for corlib.
+
+2005-06-15 Martin Baulig <martin@ximian.com>
+
+ * attribute.cs (Attribute.CheckSecurityActionValidity): Remove the
+ obsolete `SecurityAction' values.
+
+2005-06-06 Marek Safar <marek.safar@seznam.cz>
+
+ * rootcontext.cs: Reset TargetExt as well.
+
+2005-06-09 Martin Baulig <martin@ximian.com>
+
+ * delegate.cs (Delegate.VerifyMethod): Added
+ `MethodGroupExpr old_mg' argument; inherit its
+ `HasTypeParameters'; fix #75085.
+
+2005-06-09 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (Invocation.OverloadResolve): Correctly handle
+ generic methods for the SetMemberIsUsed(); fix #75064.
+
+2005-06-09 Martin Baulig <martin@ximian.com>
+
+ * statement.cs (Throw.Resolve): Use TypeManager.IsSubclassOf();
+ fixes #75062.
+
+2005-06-08 Martin Baulig <martin@ximian.com>
+
+ * cs-parser.jay (nullable_type_or_conditional): If we put the
+ nullable back and our `type' is a `ComposedCast', remove the
+ nullable from it. Fixes #75156.
+
+ * expression.cs (ComposedCast.RemoveNullable): New public method.
+
+2005-06-08 Martin Baulig <martin@ximian.com>
+
+ The big Iterators rewrite :-)
+
+ * iterators.cs: Rewrite this to use the anonymous methods framework.
+
+ * rootcontext.cs (RootContext.DefineTypes): Define Delegates
+ before the TypeContainers; see 2test-21.cs.
+
+ * class.cs
+ (TypeContainer.DefineType): Don't create a new EmitContext if we
+ already have one (this only happens if we're an Iterator).
+ (TypeContainer.Define): Also call Define() on all our iterators.
+ (Method.CreateEmitContext): Added support for iterators.
+
+ * anonymous.cs
+ (AnonymousContainer): New abstract base class for `AnonymousMethod'.
+ (AnonymousContainer.CreateMethodHost): Moved here from
+ AnonymousMethod and made abstract.
+ (AnonymousContainer.CreateScopeType): New abstract method.
+ (AnonymousContainer.IsIterator): New public property.
+ (ScopeInfo.EmitScopeType): Call CreateScopeType() on our Host to
+ get the ScopeTypeBuilder rather than manually defining it here.
+ (ScopeInfo.EmitScopeInstance): New public method; correctly handle
+ iterators here.
+
+ * driver.cs (Driver.MainDriver): Call TypeManager.InitCodeHelpers()
+ before RootContext.DefineTypes().
+
+ * codegen.cs (EmitContext.RemapToProxy): Removed.
+ (EmitContext.CurrentAnonymousMethod): Changed type from
+ AnonymousMethod -> AnonymousContainer.
+ (EmitContext.ResolveTopBlock): Protect from being called twice.
+ (EmitContext.MapVariable, RemapParameter(LValue)): Removed.
+ (EmitContext.EmitThis): Removed the iterators hacks; use the
+ anonymous methods framework for that.
+
+ * statement.cs
+ (ToplevelBlock.Container): Make this a property, not a field.
+ (ToplevelBlock.ReParent): New public method; move the
+ ToplevelBlock into a new container.
+ (Foreach.TemporaryVariable): Simplify.
+
+2005-06-05 Martin Baulig <martin@ximian.com>
+
+ * statement.cs (LocalInfo.CompilerGenerated): New flag.
+ (Block.AddTemporaryVariable): New public method; creates a new
+ `LocalInfo' for a temporary variable.
+ (Block.EmitMeta): Create the LocalBuilders for all the temporary
+ variables here.
+ (Foreach.TemporaryVariable): Use Block.AddTemporaryVariable() for
+ non-iterator variables.
+
+2005-06-05 Martin Baulig <martin@ximian.com>
+
+ * statement.cs (Foreach.TemporaryVariable): Create the
+ LocalBuilder in the Emit phase and not in Resolve since in some
+ situations, we don't have an ILGenerator during Resolve; see
+ 2test-19.cs for an example.
+
+2005-06-04 Martin Baulig <martin@ximian.com>
+
+ The big Foreach rewrite - Part II.
+
+ * typemanager.cs (TypeManager.object_getcurrent_void): Replaced
+ with `PropertyInfo ienumerator_getcurrent'.
+
+ * codegen.cs (VariableStorage): Removed.
+
+ * statement.cs
+ (Foreach): Derive from Statement, not ExceptionStatement.
+ (Foreach.CollectionForeach): New nested class. Moved all the code
+ dealing with collection foreach here.
+ (Foreach.ForeachHelperMethods): Removed.
+ (Foreach.TemporaryVariable): Implement IMemoryLocation.
+
+2005-05-23 Martin Baulig <martin@ximian.com>
+
+ * statement.cs (Try.DoResolve): Don't create a `finally' if we
+ don't need to. Fix #75014.
+
+2005-05-26 Raja R Harinath <rharinath@novell.com>
+
+ Improve user-defined conversion handling.
+ * convert.cs (GetConversionOperators): Rewrite. Return only the
+ applicable operators.
+ (AddConversionOperators): New. Helper for GetConversionOperators.
+ (FindMostEncompassedType, FindMostEncompassingType): Verify that
+ there is only one most encompassed/encompassing type.
+ (FindMostSpecificSource, FindMostSpecificTarget): Remove
+ "applicable operator" handling.
+ (UserConversion): Move cache here from GetConversionOperators.
+ Directly cache the chosen operator, rather than the whole
+ MethodGroup.
+ (ExplicitNumericConversion): Fix buggy implementation of Decimal
+ case. Allow conversion of decimal to sbyte and byte too.
+ * expression.cs (EmptyExpression.Grab, EmptyExpression.Release):
+ New static methods. Used to avoid allocating EmptyExpressions in
+ convert.cs.
+
+2005-05-24 Duncan Mak <duncan@novell.com>
+
+ * ecore.cs (CastFromDecimal): New class for casting a decimal to
+ another class, used in Convert.ExplicitNumericConversion.
+ (CastToDecimal): New class, similar to above, but casts to
+ System.Decimal, used in Convert.ImplicitNumericConversion and also
+ in explicit convesion from double/float to decimal.
+
+ * convert.cs (ImplicitNumericConversion): Handle implicit
+ conversions to System.Decimal.
+ (ExplicitNumericConversion): handle explicit conversions to
+ System.Decimal.
+
+ This fixes #68711.
+
+2005-05-20 Miguel de Icaza <miguel@novell.com>
+
+ * typemanager.cs: Do not throw an exception in the TypeBuilder
+ case, we take care of it on the TypeCode.
+
+2005-05-17 Marek Safar <marek.safar@seznam.cz>
+
+ * attribute.cs (Attribute.ResolveArguments): GuidAttribute check
+ is back.
+
+ * cs-parser.jay: Catch more lexical errors.
+
+ * report.cs: Add one more Error method.
+
+ * rootcontext.cs,
+ * typemanager.cs: Register System.Runtime.InteropServices.GuidAttribute
+
+2005-05-20 Martin Baulig <martin@ximian.com>
+
+ * class.cs (TypeContainer.CircularDepException): Removed.
+ (TypeContainer.DefineType): Removed the `InTransit' stuff.
+ (TypeContainer.CheckRecursiveDefinition): Check for circular class
+ (CS0146) and interface (CS0529) dependencies here.
+
+2005-05-20 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (New.DoResolve): Move the CS0712 check above the
+ CS0144 check; otherwise it can never be reached.
+
+2005-05-20 Martin Baulig <martin@ximian.com>
+
+ * cs-parser.jay: Fix CS0080 check; add CS0231 and CS0257 from MCS.
+
+2005-05-20 Martin Baulig <martin@ximian.com>
+
+ * class.cs (TypeContainer.DefineType): Fix CS0698 check.
+
+ * typemanager.cs (TypeManager.IsAttributeType): New public method.
+
+2005-05-19 Martin Baulig <martin@ximian.com>
+
+ * delegate.cs
+ (ImplicitDelegateCreation.Check): Added `bool check_only' argument
+ to disable error reporting.
+
+ * convert.cs (Convert.ImplicitStandardConversionExists): Use it
+ here since we don't want to report an error; see the new test-336.cs.
+
+2005-05-19 Raja R Harinath <rharinath@novell.com>
+
+ * statement.cs (ToplevelBlock.GetParameterReference)
+ (ToplevelBlock.IsParameterReference,ToplevelBlock.IsLocalParameter):
+ Move here from class Block.
+ * ecore.cs (SimpleName.SimpleNameResolve): Update to changes.
+ * expression.cs (ParameterReference.DoResolveBase): Likewise.
+
+2005-05-18 Martin Baulig <martin@ximian.com>
+
+ Fix #74978.
+
+ * flowanalysis.cs
+ (FlowBranching.Reachability): Add non-static public And() and Or()
+ methods.
+ (FlowBranchingSwitch): New class; do the `break_origins' thing
+ like in FlowBranchingLoop.
+ (FlowBranching.UsageVector.MergeBreakOrigins): Also merge the
+ reachability, not just locals and parameters.
+ (FlowBranching.MergeChild): Remove some of the hacks for loop and
+ switch; MergeBreakOrigins() now takes care of that.
+
+2005-05-18 Martin Baulig <martin@ximian.com>
+
+ * flowanalysis.cs (FlowBranching.UsageVector.MergeChild): If we're
+ a loop and may leave it, reset the barrier; fixes #74974.
+
+2005-05-16 Raja R Harinath <rharinath@novell.com>
+
+ Fix test-382.cs. Emit values of decimal constants.
+ * class.cs (TypeContainer.RegisterFieldForInitialization): New.
+ Carved out of ...
+ (TypeContainer.AddField): ... this.
+ (TypeContainer.EmitFieldInitializers): Allow the list of fields
+ with initializers to include 'Const's.
+ (ClassPart.RegisterFieldForInitialization): Forward to
+ PartialContainer.
+ * const.cs (Const.Const): Pass initializer to base class.
+ (Const.Define): In case of decimal constants, register them for
+ initialization in a static constructor.
+
+2005-05-14 Martin Baulig <martin@ximian.com>
+
+ * statement.cs (Block.Resolve): Correctly handle unreachable code;
+ do not call ResolveUnreachable() on unreachable statements in
+ here, see the comment in the source code.
+
+2005-05-13 Raja R Harinath <rharinath@novell.com>
+
+ Fix #74934.
+ * expression.cs (BinaryResolveOperator): If one of the operands of
+ an equality comparison is 'null' and the other is a pointer type,
+ convert the null to a NullPointer.
+ * convert.cs (ImplicitReferenceConversion): If the expression is a
+ NullLiteral and the target type is a pointer type, return a
+ NullPointer instead.
+ (ImplicitConversionStandard): Likewise.
+
+2005-05-13 Marek Safar <marek.safar@seznam.cz>
+
+ * cs-parser.jay: Set readonly context based on special constructs.
+
+ * expression.cs (LocalVariableReference.DoResolveBase): Improved
+ readonly variable error handling.
+
+ * rootcontext.cs (EmitCode): Don't verify members when error
+ occurred.
+
+ * statement.cs (LocalInfo): Add reaodnly context information.
+ (SetReadOnlyContext, GetReadOnlyContext): New methods.
+
+2005-05-17 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (Argument.Resolve): Turn on flow analysis; fix
+ #70970.
+
+2005-05-13 Martin Baulig <martin@ximian.com>
+
+ * statement.cs (Block.Resolve, ResolveUnreachable): Correctly
+ handle unreachable blocks.
+
+2005-05-13 Martin Baulig <martin@ximian.com>
+
+ * class.cs
+ (ConstructorInitializer.GetOverloadedConstructor): Don't crash.
+ (MethodCore.CheckCore): Use TypeManager.IsEqual(); fix #74904 and
+ #74905.
+
+2005-05-13 Martin Baulig <martin@ximian.com>
+
+ * statement.cs (Block.Resolve): Make the `bool unresolved' flag an
+ instance variable, not a local. Fix #74873.
+ (Block.ResolveUnreachable): Set it to true here.
+
+2005-05-12 Martin Baulig <martin@ximian.com>
+
+ * cs-parser.jay (property_declaration): Pass the `current_class',
+ not the `current_container' to Property's .ctor. Fixes #74912.
+
+2005-05-11 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs (Closure): Copy this from MCS and merge all the
+ GMCS-specific changes into it.
+
+2005-05-12 Raja R Harinath <harinath@gmail.com>
+
+ Fix #74920.
+ * typemanager.cs (unmanaged_enclosing_types): New.
+ (IsUnmanagedType): Avoid infloops by using
+ 'unmanaged_enclosing_types' to talk with recursive invocations.
+
+2005-05-11 Duncan Mak <duncan@novell.com>
+
+ * cs-tokenizer.cs (get_cmd_arg): Check that 'c' is not -1 before
+ continuing to process for 'arg'.
+ (handle_preprocessing_directive): Check the argument of the #endif
+ directive and report error CS1025 if there are any trailing
+ characters.
+
+ According to the C# spec, having even whitespace after the #endif
+ directive is illegal; however, because we call arg.TrimEnd ()
+ beforehand, we have the same behavior as csc, allowing whitespace
+ after the directive.
+
+ Fixes #74892.
+
+2005-05-11 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #74863.
+
+ * class.cs (ConstructorInitializer.GetOverloadedConstructor): Removed.
+ (Constructor.GetObsoleteAttribute): Implemented correctly.
+
+2005-05-10 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (Constraints.Resolve): Report CS0246 if we cannot
+ resolve the type; fixes #74864.
+ (DefaultValueExpression): Create the LocalTemporary in Emit(), not
+ in DoResolve(); fixes #74862.
+
+2005-05-10 Martin Baulig <martin@ximian.com>
+
+ * support.cs (ReflectionParameters.ParameterModifier): Use
+ `Parameter.Modifier.REF' if we both have `ParameterAttributes.Out'
+ and `ParameterAttributes.In'. Fixes #74884.
+
+2005-05-10 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs (TypeManager.MemberLookup_FindMembers): Don't use
+ the cache if we're just looking for `MemberTypes.NestedType' in a
+ generic instance.
+
+ * ecore.cs (Expression.ResolveAsTypeTerminal): Don't check the
+ constraints if we're still resolving the type tree.
+ (Expression.MemberLookup): If we're resolving the type tree, only
+ look for `MemberTypes.NestedType' since we're only interested in
+ getting types.
+
+ * class.cs (TypeContainer.DefineType): Don't resolve the type
+ parameters here; do this later in ResolveType() after the type
+ tree has been resolved.
+ (TypeContainer.ResolveType): New public method; this is called
+ after the type tree is resolved and before the types are being
+ populated. We resolve the generic constraints here.
+ (TypeContainer.DoDefineMember): Check the constraints on our base
+ class and interfaces.
+
+ * decl.cs (DeclSpace.ResolveBaseTypeExpr): Make this protected;
+ set the `ResolvingTypeTree' flag on the EmitContext.
+
+ * codegen.cs (EmitContext.ResolvingTypeTree): New public field.
+
+2005-05-10 Marek Safar <marek.safar@seznam.cz>
+
+ * class.cs (Method.Define): Catch attempt for Finalizer declaration.
+
+ * expression.cs (Argument.GetParameterModifier): Turned to property.
+ (Invocation.Error_InvalidArguments): Add more descriptive errors.
+
+ * parameter.cs (Parameter.GetModifierSignature): Translates modifier to
+ its C# equivalent.
+
+2005-05-09 Raja R Harinath <rharinath@novell.com>
+
+ Fix #74852.
+ * decl.cs (MemberCache.AddMethods): Register override methods,
+ rather than non-override methods.
+ * typemanager.cs (RegisterOverride): New.
+ (IsOverride): Update.
+
+2005-05-09 Marek Safar <marek.safar@seznam.cz>
+
+ * typemanager.cs (TypeManager): Moved InitGenerics to Reset method.
+
+2005-05-06 Martin Baulig <martin@ximian.com>
+
+ * attribute.cs
+ (Attributable.IsClsComplianceRequired): Fix typo in the method name.
+ (AttributeTester.AnalyzeTypeCompliance): Add generics support.
+
+2005-05-09 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #73105.
+
+ * ecore.cs (SimpleName.SimpleNameResolve): Add in_transit to catch
+ recursive declaration.
+
+ * statement.cs (Block.ResolveMeta): Report any error in resolving.
+
+2005-05-06 Marek Safar <marek.safar@seznam.cz>
+
+ * cfold (DoConstantNumericPromotions): Don't try to convert 0 enum.
+
+ * expression.cs (Binary.DoResolve): (x && 0) is always 0.
+
+2005-05-05 Raja R Harinath <rharinath@novell.com>
+
+ Fix #74797.
+ * decl.cs (DeclSpace.FamilyAccessible):
+ Use TypeManager.IsNestedFamilyAccessible.
+
+ Fix reopened #64812.
+ * typemanager.cs (Closure.Filter): Introduce checks for 'protected
+ internal'.
+
+2005-05-04 Raja R Harinath <rharinath@novell.com>
+ Abin Thomas <projectmonokochi@rediffmail.com>
+ Anoob V E <projectmonokochi@rediffmail.com>
+ Harilal P R <projectmonokochi@rediffmail.com>
+
+ Fix #64812.
+ * typemanager.cs (Closure.CheckValidFamilyAccess): Don't blindly
+ allow access to all static members.
+
+2005-05-04 Martin Baulig <martin@ximian.com>
+
+ * ecore.cs (FieldExpr.DoResolveLValue): Always call fb.SetAssigned().
+
+2005-05-04 Martin Baulig <martin@ximian.com>
+
+ Fix #74655.
+
+ * statement.cs (Switch.SimpleSwitchEmit): Always emit the default
+ section at the end; make things work if `default' is not the last
+ section.
+
+2005-05-04 Martin Baulig <martin@ximian.com>
+
+ Fix #70400.
+
+ * statement.cs (Switch): Replaced the `got_default' field with a
+ `default_section' one.
+ (Switch.CheckSwitch): Set `default_section' here.
+ (Switch.Resolve): If we're a constant switch and the constant is
+ not found, use the default section.
+
+2005-05-03 Martin Baulig <martin@ximian.com>
+
+ * expression.cs (ArrayAccess.EmitGetLength): New public method.
+
+ * statement.cs (Foreach.ArrayForeach): New nested class.
+ (Foreach.TemporaryVariable): New nested class.
+ (Foreach.EmitArrayForeach): Removed; this is now in the new
+ ArrayForeach class.
+
+2005-05-03 Raja R Harinath <rharinath@novell.com>
+
+ * pending.cs (BaseImplements): Move the #74773 fix here. This is
+ more conservative.
+ (VerifyPendingMethods): Revert change below.
+
+ * typemanager.cs (IsOverride, RegisterNonOverride): New.
+ * decl.cs (MemberCache.AddMethod): Register "non-override" methods
+ that used to trigger warning -28. Remove warning -28.
+ * expression.cs (Invocation.OverloadResolve): Use
+ TypeManager.IsOverride to distinguish override methods.
+
+ Fix #74773.
+ * pending.cs (VerifyPendingMethods): If a base type implements the
+ requested interface, don't bother checking individual methods of
+ the base type. As a side-effect, this prevents the creation of
+ unnecessary proxies.
+
+2005-05-02 Martin Baulig <martin@ximian.com>
+
+ Fix #70182.
+
+ * flowanalysis.cs (FlowBranching.UsageVector.MergeJumpOrigins):
+ Also `And' the locals if the old vector is null.
+ (FlowBranching.UsageVector.BitVector.And): Allow `vector' being
+ null; in this case we basically reset all the variables.
+
+2005-05-02 Martin Baulig <martin@ximian.com>
+
+ Fix #74529.
+
+ * flowanalysis.cs (FlowBranching.UsageVector.MergeBreakOrigins):
+ Added `FlowBranching branching' argument; always `and' the
+ variables instead of `or'ing them unless we're an infinite loop.
+
+ * statement.cs (While.Resolve): Create a new sibling unless we're
+ infinite.
+
+2005-05-02 Martin Baulig <martin@ximian.com>
+
+ Fix #70140.
+
+ * class.cs (ConstructorInitializer.Resolve): Added `Block block'
+ arguments; use it instead of creating a new TopLevelBlock.
+ (Constructor.Emit): Call `block.ResolveMeta ()' before resolving
+ our ConstructorInitializer.
+
+ * statement.cs
+ (TopLevelBlock.TopLevelBranching): New public property.
+ (TopLevelBlock.ResolveMeta): New public method; call ResolveMeta()
+ and create our `TopLevelBranching'.
+
+ * codegen.cs (EmitContext.ResolveTopBlock): If we're not an
+ anonymous method host, use `block.TopLevelBranching' rather than
+ creating a new branching.
+
+2005-04-20 Miguel de Icaza <miguel@novell.com>
+
+ * anonymous.cs (ScopeInfo.AddChild): when adding a new child to
+ a ScopeInfo, if any of the current children is a child of the new
+ entry, move those children there.
+
+2005-04-30 Martin Baulig <martin@ximian.com>
+
+ * statement.cs (Switch.SimpleSwitchEmit): Reset `default_at_end'
+ at the beginning of a SwitchSection. Fix #73335.
+
+2005-04-27 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #74378
+ * class.cs (EmitFieldInitializers): Use FieldExpr in initializer.
+
+ * ecore.cs (FieldExpr): Add a new ctor with in_initializer.
+ (FieldExpr.DoResolve): Obsolete members are ignored for field
+ initializers.
+
+2005-04-26 Marek Safar <marek.safar@seznam.cz>
+
+ * attribute.cs (AreOverloadedMethodParamsClsCompliant): Add array
+ of arrays detection.
+
+ * class.cs (Interface.VerifyClsCompliance): Add base interfaces
+ verification.
+ (Field.VerifyClsCompliance): Volatile fields are not compliant.
+
+ * decl.cs (MemberCache.VerifyClsParameterConflict): Add array of
+ arrays report.
+
+2005-04-25 Ben Maurer <bmaurer@ximian.com>
+
+ * cs-parser.jay: Use the prefered version of -unsafe in error
+ message.
+
+2005-04-22 Marek Safar <marek.safar@seznam.cz>
+
+ * driver.cs (CompilerCallableEntryPoint.Invoke): Reset under any
+ circumstances.
+
+2005-04-20 John Luke <john.luke@gmail.com>
+
+ * driver.cs: fix typo in error message, --outout to --output
+
+2005-04-30 Martin Baulig <martin@ximian.com>
+
+ * attribute.cs (Attribute.CheckSecurityActionValidity): Correctly
+ handle the .NET 2.x security attributes.
+
+2005-04-30 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs
+ (TypeManager.ExpandInterfaces): Don't add things twice.
+
+ * class.cs
+ (TypeContainer.VerifyClsCompliance): Allow generic instances.
+
+2005-04-29 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (Constraints.ResolveTypes): Expand interfaces.
+
+ * anonymous.cs: Added support for anonymous generic methods.
+
+2005-04-29 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs (TypeManager.GetInterfaces): Correctly handle
+ generic instances.
+
+2005-04-29 Martin Baulig <martin@ximian.com>
+
+ * generic.cs (TypeManager.HasConstructorConstraint): Removed.
+
+ * expression.cs (New.DoResolve): Fix the CS0304 check.
+
+2005-04-29 Martin Baulig <martin@ximian.com>
+
+ * typemanager.cs (TypeManager.GetFullName): Updated to the new
+ naming schema.
+
+ * class.cs (MethodCore.IsDuplicateImplementation): If we're an
+ explicit interface implementation, compare the interface types.
+ (MethodData.Define): Use the new naming scheme from the latest
+ .NET 2.x beta2.
+ (MemberBase.DoDefineBase): Resolve `InterfaceType' here.
+
+ * decl.cs (MemberName.GetMemberName): Removed.
+ (MemberName.MethodName, FullName): New properties.
+
+2005-04-25 Raja R Harinath <rharinath@novell.com>
+
+ * gmcs.exe.config: Update v2.0.40607 -> v2.0.50215.
+
2005-04-22 Martin Baulig <martin@ximian.com>
* generic.cs (GenericMethod): Create the EmitContext in the
* driver.cs (Driver.parse): Synchronize parser ErrorOutput with
Report.Stderr.
+2005-04-18 Raja R Harinath <rharinath@novell.com>
+
+ Fix #74481.
+ * expression.cs (Binary.EqualsNullIsReferenceEquals): New.
+ (Binary.DoResolveOperator): Use it to avoid blindly optimizing out
+ all null comparisons against reference types.
+
2005-04-18 Marek Safar <marek.safar@seznam.cz>
Fix# 74565
According to the spec,
In a member access of the form E.I, if E is a single identifier,
- and if the meaning of E as a simple-name (§7.5.2) is a constant,
+ and if the meaning of E as a simple-name (§7.5.2) is a constant,
field, property, localvariable, or parameter with the same type as
- the meaning of E as a type-name (§3.8), then both possible
+ the meaning of E as a type-name (§3.8), then both possible
meanings of E are permitted.
We did not check that E as a simple-name had the same type as E as
According to the spec,
In a member access of the form E.I, if E is a single identifier,
- and if the meaning of E as a simple-name (§7.5.2) is a constant,
+ and if the meaning of E as a simple-name (§7.5.2) is a constant,
field, property, localvariable, or parameter with the same type as
- the meaning of E as a type-name (§3.8), then both possible
+ the meaning of E as a type-name (§3.8), then both possible
meanings of E are permitted.
We did not check that E as a simple-name had the same type as E as
basically ignored the method name. Now we make sure that the
method name is one of the valid indexer names.
-2004-03-14 Gustavo Giráldez <gustavo.giraldez@gmx.net>
+2004-03-14 Gustavo Giráldez <gustavo.giraldez@gmx.net>
* support.cs (SeekableStreamReader): Keep track of stream byte
positions and don't mix them with character offsets to the buffer.
- Patch from Gustavo Giráldez
+ Patch from Gustavo Giráldez
2004-03-15 Marek Safar <marek.safar@seznam.cz>
* driver.cs: fixed bug #37187.
-2003-01-27 Pedro Martinez Juliá <yoros@wanadoo.es>
+2003-01-27 Pedro Martinez Juliá <yoros@wanadoo.es>
* expression.cs (IndexerAccess.DoResolve): Before trying to resolve
any indexer, it's needed to build a list with all the indexers in the
without debugging support.
* delegate.cs (Delegate.CloseDelegate): Removed, use CloseType instead.
- Fixes bug #30235. Thanks to Ricardo Fernández Pascual.
+ Fixes bug #30235. Thanks to Ricardo Fernández Pascual.
2002-09-12 Martin Baulig <martin@gnome.org>