mono.git
21 years ago2003-04-05 Martin Baulig <martin@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:02:13 +0000 (23:02 -0000)]
2003-04-05  Martin Baulig  <martin@ximian.com>

* statement.cs (FlowBranching.UsageVector.MergeChildren): Fix bug #40670.

svn path=/trunk/mcs/; revision=13425

21 years agoFix compilation.
Miguel de Icaza [Tue, 8 Apr 2003 23:02:09 +0000 (23:02 -0000)]
Fix compilation.

svn path=/trunk/mcs/; revision=13424

21 years ago2003-04-02 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:02:06 +0000 (23:02 -0000)]
2003-04-02  Miguel de Icaza  <miguel@ximian.com>

* class.cs (Event.Define): Do not allow abstract events to have
initializers.

2003-04-01  Miguel de Icaza  <miguel@ximian.com>

* cs-parser.jay: Add error productions for ADD/REMOVE missing a
block in event declarations.

svn path=/trunk/mcs/; revision=13423

21 years ago2003-04-01 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:01:57 +0000 (23:01 -0000)]
2003-04-01  Miguel de Icaza  <miguel@ximian.com>

* expression.cs (Is.Emit): For action `LeaveOnStack' we were
leaving a class on the stack instead of a boolean value (int
0/1).  Change the code so we compare against null, and then the

svn path=/trunk/mcs/; revision=13422

21 years ago2003-04-01 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:01:49 +0000 (23:01 -0000)]
2003-04-01  Miguel de Icaza  <miguel@ximian.com>

* class.cs (TypeContainer.GetClassBases): We were checking for the
parent class being sealed too late.

* expression.cs (Binary.Emit): For <= and >= when dealing with
floating point values, use cgt.un and clt.un instead of cgt and
clt alone.

svn path=/trunk/mcs/; revision=13421

21 years ago2003-04-01 Zoltan Varga <vargaz@freemail.hu>
Miguel de Icaza [Tue, 8 Apr 2003 23:01:33 +0000 (23:01 -0000)]
2003-04-01  Zoltan Varga  <vargaz@freemail.hu>

* statement.cs: Apply the same optimization as MS: skip the
GetEnumerator returning an IEnumerator, and use the one returning a
CharEnumerator instead. This allows us to avoid the try-finally block
and the boxing.

svn path=/trunk/mcs/; revision=13420

21 years ago2003-03-31 Gaurav Vaish <gvaish_mono@lycos.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:01:29 +0000 (23:01 -0000)]
2003-03-31  Gaurav Vaish <gvaish_mono@lycos.com>

* cs-parser.jay: Attributes cannot be applied to
                 namespaces. Fixes #40473

svn path=/trunk/mcs/; revision=13419

21 years ago2003-03-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:01:25 +0000 (23:01 -0000)]
2003-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>

* class.cs:
(Add*): check if the name is valid using the full name for constants,
fields, properties and events.

svn path=/trunk/mcs/; revision=13418

21 years ago2003-03-28 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:01:16 +0000 (23:01 -0000)]
2003-03-28  Miguel de Icaza  <miguel@ximian.com>

* enum.cs (Enum.DefineType, Enum.IsValidEnumConstant): Also allow
char constants to be part of the enumeration.

svn path=/trunk/mcs/; revision=13417

21 years ago2003-02-25 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:01:10 +0000 (23:01 -0000)]
2003-02-25  Miguel de Icaza  <miguel@ximian.com>

* makefile (all): Make it so that doing `make' will run the
default tests depending on Windows/Linux.

svn path=/trunk/mcs/; revision=13416

21 years ago2003-03-28 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:01:02 +0000 (23:01 -0000)]
2003-03-28  Miguel de Icaza  <miguel@ximian.com>

* class.cs (TypeContainer.CheckPairedOperators): Report error for missmatch on
operator true/false as required by the spec.

svn path=/trunk/mcs/; revision=13415

21 years ago2003-03-28 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:00:53 +0000 (23:00 -0000)]
2003-03-28  Miguel de Icaza  <miguel@ximian.com>

* expression.cs (Unary.ResolveOperator): In LogicalNot, do an
implicit conversion to boolean.

* statement.cs (Statement.ResolveBoolean): A boolean expression is
also one where the type implements `operator true'.

* ecore.cs (Expression.GetOperatorTrue): New helper routine to
get an expression that will invoke operator true based on an
expression.

(GetConversionOperators): Removed the hack that called op_True
here.

(Expression.ResolveBoolean): Move this from Statement.

svn path=/trunk/mcs/; revision=13414

21 years ago2003-03-17 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:00:44 +0000 (23:00 -0000)]
2003-03-17  Miguel de Icaza  <miguel@ximian.com>

* ecore.cs (FieldExpr): do not allow initialization of initonly
fields on derived classes

svn path=/trunk/mcs/; revision=13413

21 years ago2003-03-13 Martin Baulig <martin@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:00:40 +0000 (23:00 -0000)]
2003-03-13  Martin Baulig  <martin@ximian.com>

* statement.cs (Block.Emit): Call ig.BeginScope() and
ig.EndScope() when compiling with debugging info; call
LocalBuilder.SetLocalSymInfo _after_ opening the scope.

svn path=/trunk/mcs/; revision=13412

21 years ago2003-03-08 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:00:36 +0000 (23:00 -0000)]
2003-03-08  Miguel de Icaza  <miguel@ximian.com>

* expression.cs (Indexers): Do not construct immediately, allow
for new members to be appended as we go.  Fixes 38143

svn path=/trunk/mcs/; revision=13411

21 years ago2003-03-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:00:32 +0000 (23:00 -0000)]
2003-03-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>

* expression.cs: save/restore context when resolving an unchecked
expression.

svn path=/trunk/mcs/; revision=13410

21 years ago2003-03-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:00:28 +0000 (23:00 -0000)]
2003-03-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>

* expression.cs: save/restore context when resolving an unchecked
expression.

svn path=/trunk/mcs/; revision=13409

21 years ago2003-03-05 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:00:19 +0000 (23:00 -0000)]
2003-03-05  Miguel de Icaza  <miguel@ximian.com>

* cfold.cs: Catch division by zero in modulus operator during
constant folding.

svn path=/trunk/mcs/; revision=13408

21 years ago2003-03-03 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:00:15 +0000 (23:00 -0000)]
2003-03-03  Miguel de Icaza  <miguel@ximian.com>

* interface.cs (Interface.DefineMembers): Avoid defining members
twice.

svn path=/trunk/mcs/; revision=13407

21 years ago2003-02-27 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:00:10 +0000 (23:00 -0000)]
2003-02-27  Miguel de Icaza  <miguel@ximian.com>

* driver.cs: handle the +/- options for -noconfig

svn path=/trunk/mcs/; revision=13406

21 years ago2003-02-27 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:00:05 +0000 (23:00 -0000)]
2003-02-27  Miguel de Icaza  <miguel@ximian.com>

* statement.cs (Unchecked.Resolve): Also track the state in the Resolve phase.

svn path=/trunk/mcs/; revision=13405

21 years ago2003-02-27 Martin Baulig <martin@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 23:00:01 +0000 (23:00 -0000)]
2003-02-27  Martin Baulig  <martin@ximian.com>

* ecore.cs (Expression.MemberLookup): Don't create a
MethodGroupExpr for something which is not a method.  Fixes #38291.

svn path=/trunk/mcs/; revision=13404

21 years ago2003-02-25 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:59:55 +0000 (22:59 -0000)]
2003-02-25  Miguel de Icaza  <miguel@ximian.com>

* class.cs (MemberBase.CheckParameters): Also check that the type
is unmanaged if it is a pointer.

* expression.cs (SizeOf.Resolve): Add location information.

* statement.cs (Block.EmitMeta): Flag error (208) if a pointer to
a managed type is declared.

svn path=/trunk/mcs/; revision=13403

21 years ago2003-02-25 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:59:41 +0000 (22:59 -0000)]
2003-02-25  Miguel de Icaza  <miguel@ximian.com>

* expression.cs (Invocation.VerifyArgumentsCompat): Check for the
parameter modifiers as well.  Fixes bug 38606

svn path=/trunk/mcs/; revision=13402

21 years ago2003-02-25 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:59:33 +0000 (22:59 -0000)]
2003-02-25  Miguel de Icaza  <miguel@ximian.com>

* class.cs: Very sad.  Am backing out the speed up changes
introduced by the ArrayList -> Array in the TypeContainer, as they
were not actually that much faster, and introduced a bug (no error
reports on duplicated methods).

svn path=/trunk/mcs/; revision=13401

21 years ago Another change. Use target.Resolve instead of LValueResolve.
Miguel de Icaza [Tue, 8 Apr 2003 22:59:25 +0000 (22:59 -0000)]
Another change.  Use target.Resolve instead of LValueResolve.
Although we are resolving for LValues, we will let the Assign code
take care of that (it will be called again from Resolve).  This
basically allows code like this:

class X { X operator + (X x, object o) {} X this [int idx] { get; set; } }
class Y { void A (X x) { x [0] += o; }

The problem was that the indexer was trying to resolve for
set_Item (idx, object o) and never finding one.  The real set_Item
was set_Item (idx, X).  By delaying the process we get the right
semantics.

Fixes bug: 36505

svn path=/trunk/mcs/; revision=13400

21 years ago2003-02-25 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:59:20 +0000 (22:59 -0000)]
2003-02-25  Miguel de Icaza  <miguel@ximian.com>

* assign.cs (CompoundAssign.DoLResolve): Resolve the original
source first, this will guarantee that we have a valid expression
before calling in lower levels functions that will require a
resolved object.  Then use this original_source in the
target.ResolveLValue instead of the original source that was
passed to us.

svn path=/trunk/mcs/; revision=13399

21 years ago2003-02-23 Martin Baulig <martin@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:59:16 +0000 (22:59 -0000)]
2003-02-23  Martin Baulig  <martin@ximian.com>

* statement.cs (Block.Emit): Override this and set ec.CurrentBlock
while calling DoEmit ().

* codegen.cs (EmitContext.Mark): Don't mark locations in other
source files; if you use the #line directive inside a method, the
compiler stops emitting line numbers for the debugger until it
reaches the end of the method or another #line directive which
restores the original file.

svn path=/trunk/mcs/; revision=13398

21 years ago2003-02-23 Martin Baulig <martin@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:59:12 +0000 (22:59 -0000)]
2003-02-23  Martin Baulig  <martin@ximian.com>

* statement.cs (FlowBranching.UsageVector.MergeChildren): Fix bug #37708.

svn path=/trunk/mcs/; revision=13397

21 years ago2003-02-23 Martin Baulig <martin@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:59:07 +0000 (22:59 -0000)]
2003-02-23  Martin Baulig  <martin@ximian.com>

* statement.cs (Block.AddChildVariableNames): We need to call this
recursively, not just for our immediate children.

svn path=/trunk/mcs/; revision=13396

21 years ago2003-02-23 Martin Baulig <martin@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:59:03 +0000 (22:59 -0000)]
2003-02-23  Martin Baulig  <martin@ximian.com>

* class.cs (Event.Define): Always make the field private, like csc does.

* typemanager.cs (TypeManager.RealMemberLookup): Make events
actually work, fixes bug #37521.

svn path=/trunk/mcs/; revision=13395

21 years ago2003-02-23 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:58:55 +0000 (22:58 -0000)]
2003-02-23  Miguel de Icaza  <miguel@ximian.com>

* delegate.cs: When creating the various temporary "Parameters"
classes, make sure that we call the ComputeAndDefineParameterTypes
on those new parameters (just like we do with the formal ones), to
allow them to be resolved in the context of the DeclSpace.

This fixes the bug that Dick observed in Bugzilla #38530.

svn path=/trunk/mcs/; revision=13394

21 years ago2003-02-22 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:58:50 +0000 (22:58 -0000)]
2003-02-22  Miguel de Icaza  <miguel@ximian.com>

* expression.cs (ResolveMemberAccess): When resolving a constant,
do not attempt to pull a constant if the value was not able to
generate a valid constant.

* const.cs (LookupConstantValue): Do not report more errors than required.

svn path=/trunk/mcs/; revision=13393

21 years ago2003-02-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:58:42 +0000 (22:58 -0000)]
2003-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>

* expression.cs: fixes bug #38328.

svn path=/trunk/mcs/; revision=13392

21 years ago2003-02-18 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:58:33 +0000 (22:58 -0000)]
2003-02-18  Miguel de Icaza  <miguel@ximian.com>

* class.cs: Changed all the various members that can be part of a
class from being an ArrayList to be an Array of the right type.
During the DefineType type_list, interface_list, delegate_list and
enum_list are turned into types, interfaces, delegates and enums
arrays.

And during the member population, indexer_list, event_list,
constant_list, field_list, instance_constructor_list, method_list,
operator_list and property_list are turned into their real arrays.

Although we could probably perform this operation earlier, for
good error reporting we need to keep the lists and remove the
lists for longer than required.

This optimization was triggered by Paolo profiling the compiler
speed on the output of `gen-sample-program.pl' perl script.

* decl.cs (DeclSpace.ResolveType): Set the ContainerType, so we do
not crash in methods like MemberLookupFailed that use this field.

This problem arises when the compiler fails to resolve a type
during interface type definition for example.

svn path=/trunk/mcs/; revision=13391

21 years ago2003-02-18 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:58:25 +0000 (22:58 -0000)]
2003-02-18  Miguel de Icaza  <miguel@ximian.com>

* expression.cs (Indexers.GetIndexersForType): Interfaces do not
inherit from System.Object, so we have to stop at null, not only
when reaching System.Object.

svn path=/trunk/mcs/; revision=13390

21 years ago2003-02-17 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:58:16 +0000 (22:58 -0000)]
2003-02-17  Miguel de Icaza  <miguel@ximian.com>

* expression.cs: (Indexers.GetIndexersForType): Martin's fix used
DeclaredOnly because the parent indexer might have had a different
name, but did not loop until the top of the hierarchy was reached.

The problem this one fixes is 35492: when a class implemented an
indexer from an interface, we were getting the interface method
(which was abstract) and we were flagging an error (can not invoke
abstract method).

This also keeps bug 33089 functioning, and test-148 functioning.

svn path=/trunk/mcs/; revision=13389

21 years ago2003-02-17 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:58:08 +0000 (22:58 -0000)]
2003-02-17  Miguel de Icaza  <miguel@ximian.com>

* typemanager.cs (IsSpecialMethod): The correct way of figuring
out if a method is special is to see if it is declared in a
property or event, or whether it is one of the predefined operator
names.   This should fix correctly #36804.

svn path=/trunk/mcs/; revision=13388

21 years ago2003-02-15 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:58:00 +0000 (22:58 -0000)]
2003-02-15  Miguel de Icaza  <miguel@ximian.com>

The goal here is to remove the dependency on EmptyCast.Peel ().
Killing it completely.

The problem is that currently in a number of places where
constants are expected, we have to "probe" for an EmptyCast, and
Peel, which is not the correct thing to do, as this will be
repetitive and will likely lead to errors.

The idea is to remove any EmptyCasts that are used in casts that
can be reduced to constants, so we only have to cope with
constants.

This bug hunt was triggered by Bug 37363 and the desire to remove
the duplicate pattern where we were "peeling" emptycasts to check
whether they were constants.  Now constants will always be
constants.

* ecore.cs: Use an enumconstant here instead of wrapping with
EmptyCast.

* expression.cs (Cast.TryReduce): Ah, the tricky EnumConstant was
throwing me off.  By handling this we can get rid of a few hacks.

* statement.cs (Switch): Removed Peel() code.

svn path=/trunk/mcs/; revision=13387

21 years ago2003-02-14 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:57:52 +0000 (22:57 -0000)]
2003-02-14  Miguel de Icaza  <miguel@ximian.com>

* class.cs: Location information for error 508

svn path=/trunk/mcs/; revision=13386

21 years ago2003-02-14 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:57:44 +0000 (22:57 -0000)]
2003-02-14  Miguel de Icaza  <miguel@ximian.com>

* expression.cs (New.DoResolve): Add a guard against double
resolution of an expression.

The New DoResolve might be called twice when initializing field
expressions (see EmitFieldInitializers, the call to
GetInitializerExpression will perform a resolve on the expression,
and later the assign will trigger another resolution

This leads to bugs (#37014)

svn path=/trunk/mcs/; revision=13385

21 years ago2003-02-14 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:57:36 +0000 (22:57 -0000)]
2003-02-14  Miguel de Icaza  <miguel@ximian.com>

* delegate.cs: The signature for EndInvoke should contain any ref
or out parameters as well.  We were not doing this in the past.

svn path=/trunk/mcs/; revision=13384

21 years ago2003-02-14 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:57:32 +0000 (22:57 -0000)]
2003-02-14  Miguel de Icaza  <miguel@ximian.com>

* class.cs (Field.Define): Do not overwrite the type definition
inside the `volatile' group.  Turns out that volatile enumerations
were changing the type here to perform a validity test, which
broke conversions.

svn path=/trunk/mcs/; revision=13383

21 years ago2003-02-12 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:57:23 +0000 (22:57 -0000)]
2003-02-12  Miguel de Icaza  <miguel@ximian.com>

* ecore.cs (FieldExpr.AddressOf): In the particular case of This
and structs, we do not want to load the instance variable

svn path=/trunk/mcs/; revision=13382

21 years agoOops. Wrongg ChangeLog entry
Miguel de Icaza [Tue, 8 Apr 2003 22:57:19 +0000 (22:57 -0000)]
Oops.  Wrongg ChangeLog entry

svn path=/trunk/mcs/; revision=13381

21 years ago2003-02-12 Zoltan Varga <vargaz@freemail.hu>
Miguel de Icaza [Tue, 8 Apr 2003 22:57:15 +0000 (22:57 -0000)]
2003-02-12  Zoltan Varga  <vargaz@freemail.hu>

* attribute.cs (ApplyAttributes): apply all MethodImplAttributes, not
just InternalCall.

svn path=/trunk/mcs/; revision=13380

21 years ago2003-02-09 Martin Baulig <martin@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:57:11 +0000 (22:57 -0000)]
2003-02-09  Martin Baulig  <martin@ximian.com>

* namespace.cs (Namespace..ctor): Added SourceFile argument.
(Namespace.DefineNamespaces): New static public method; this is
called when we're compiling with debugging to add all namespaces
to the symbol file.

* tree.cs (Tree.RecordNamespace): Added SourceFile argument and
pass it to the Namespace's .ctor.

* symbolwriter.cs (SymbolWriter.OpenMethod): Added TypeContainer
and MethodBase arguments; pass the namespace ID to the symwriter;
pass the MethodBase instead of the token to the symwriter.
(SymbolWriter.DefineNamespace): New method to add a namespace to
the symbol file.

svn path=/trunk/mcs/; revision=13379

21 years ago2003-02-09 Martin Baulig <martin@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:57:03 +0000 (22:57 -0000)]
2003-02-09  Martin Baulig  <martin@ximian.com>

* symbolwriter.cs: New file.  This is a wrapper around
ISymbolWriter with a cleaner API.  We'll dynamically Invoke()
methods here in near future.

svn path=/trunk/mcs/; revision=13378

21 years ago2003-02-09 Martin Baulig <martin@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:56:53 +0000 (22:56 -0000)]
2003-02-09  Martin Baulig  <martin@ximian.com>

* codegen.cs (EmitContext.Mark): Just pass the arguments to
ILGenerator.MarkSequencePoint() which are actually used by the
symbol writer.

svn path=/trunk/mcs/; revision=13377

21 years ago2003-02-09 Martin Baulig <martin@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:56:49 +0000 (22:56 -0000)]
2003-02-09  Martin Baulig  <martin@ximian.com>

* location.cs (SourceFile): New public sealed class.  This
contains the name and an index which is used in the location's token.
(Location): Reserve an appropriate number of bits in the token for
the source file instead of walking over that list, this gives us a
really huge performance improvement when compiling with debugging.

* driver.cs (Driver.parse, Driver.tokenize_file): Take a
`SourceFile' argument instead of a string.
(Driver.ProcessFile): Add all the files via Location.AddFile(),
but don't parse/tokenize here, we need to generate the list of all
source files before we do that.
(Driver.ProcessFiles): New static function.  Parses/tokenizes all
the files.

* cs-parser.jay (CSharpParser): Take a `SourceFile' argument
instead of a string.

* cs-tokenizer.cs (Tokenizer): Take `SourceFile' argument instead
of a string.

svn path=/trunk/mcs/; revision=13376

21 years agoHmm, no, this was wrong.
Miguel de Icaza [Tue, 8 Apr 2003 22:56:44 +0000 (22:56 -0000)]
Hmm, no, this was wrong.

svn path=/trunk/mcs/; revision=13375

21 years ago2003-02-09 Martin Baulig <martin@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:56:40 +0000 (22:56 -0000)]
2003-02-09  Martin Baulig  <martin@ximian.com>

* driver.cs (Driver.SetupDefaultDefines): Define `__MonoRuntime__'
if we're using mono's corlib.

svn path=/trunk/mcs/; revision=13374

21 years ago2003-02-09 Martin Baulig <martin@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:56:35 +0000 (22:56 -0000)]
2003-02-09  Martin Baulig  <martin@ximian.com>

* cs-tokenizer.cs (Tokenizer.PreProcessLine): Also reset the
filename on `#line default'.

svn path=/trunk/mcs/; revision=13373

21 years agoSat Feb 8 17:03:16 CET 2003 Paolo Molaro <lupus@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:56:31 +0000 (22:56 -0000)]
Sat Feb 8 17:03:16 CET 2003 Paolo Molaro <lupus@ximian.com>

* statement.cs: don't clear the pinned var when the fixed statement
returns from the method (fixes bug#37752).

svn path=/trunk/mcs/; revision=13372

21 years agoSat Feb 8 12:58:06 CET 2003 Paolo Molaro <lupus@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:56:27 +0000 (22:56 -0000)]
Sat Feb 8 12:58:06 CET 2003 Paolo Molaro <lupus@ximian.com>

* typemanager.cs: fix from mathpup@mylinuxisp.com (Marcus Urban)
to IsValueType ().

svn path=/trunk/mcs/; revision=13371

21 years ago2003-02-07 Martin Baulig <martin@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:56:23 +0000 (22:56 -0000)]
2003-02-07  Martin Baulig  <martin@ximian.com>

* driver.cs: Removed the `--debug-args' command line argument.

* codegen.cs (CodeGen.SaveSymbols): Removed, this is now done
automatically by the AsssemblyBuilder.
(CodeGen.InitializeSymbolWriter): We don't need to call any
initialization function on the symbol writer anymore.  This method
doesn't take any arguments.

svn path=/trunk/mcs/; revision=13370

21 years ago2003-02-03 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:56:18 +0000 (22:56 -0000)]
2003-02-03  Miguel de Icaza  <miguel@ximian.com>

* driver.cs: (AddAssemblyAndDeps, LoadAssembly): Enter the types
from referenced assemblies as well.

svn path=/trunk/mcs/; revision=13369

21 years ago2003-02-02 Martin Baulig <martin@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:56:14 +0000 (22:56 -0000)]
2003-02-02  Martin Baulig  <martin@ximian.com>

* class.cs (MethodData.Emit): Generate debugging info for external methods.

svn path=/trunk/mcs/; revision=13368

21 years ago2003-02-02 Martin Baulig <martin@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:56:06 +0000 (22:56 -0000)]
2003-02-02  Martin Baulig  <martin@ximian.com>

* class.cs (Constructor.Emit): Open the symbol writer before
emitting the constructor initializer.
(ConstructorInitializer.Emit): Call ec.Mark() to allow
single-stepping through constructor initializers.

svn path=/trunk/mcs/; revision=13367

21 years ago2003-01-30 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:55:47 +0000 (22:55 -0000)]
2003-01-30  Miguel de Icaza  <miguel@ximian.com>

* class.cs: Handle error 549: do not allow virtual methods in
sealed classes.

svn path=/trunk/mcs/; revision=13366

21 years agoCheck access levels when resolving types
Miguel de Icaza [Tue, 8 Apr 2003 22:55:38 +0000 (22:55 -0000)]
Check access levels when resolving types

svn path=/trunk/mcs/; revision=13365

21 years agoAdd parameters and locals set in catch blocks that might return to set vector
Miguel de Icaza [Tue, 8 Apr 2003 22:55:34 +0000 (22:55 -0000)]
Add parameters and locals set in catch blocks that might return to set vector

svn path=/trunk/mcs/; revision=13364

21 years ago2003-01-29 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:55:30 +0000 (22:55 -0000)]
2003-01-29  Miguel de Icaza  <miguel@ximian.com>

* class.cs (Operator): Set the SpecialName flags for operators.

* expression.cs (Invocation.DoResolve): Only block calls to
accessors and operators on SpecialName methods.

(Cast.TryReduce): Handle conversions from char constants.

svn path=/trunk/mcs/; revision=13363

21 years agoTue Jan 28 17:30:57 CET 2003 Paolo Molaro <lupus@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:55:18 +0000 (22:55 -0000)]
Tue Jan 28 17:30:57 CET 2003 Paolo Molaro <lupus@ximian.com>

* statement.cs: small memory and time optimization in FlowBranching.

svn path=/trunk/mcs/; revision=13362

21 years ago2003-01-28 Pedro Mart <yoros@wanadoo.es>
Miguel de Icaza [Tue, 8 Apr 2003 22:55:14 +0000 (22:55 -0000)]
2003-01-28  Pedro Mart  <yoros@wanadoo.es>

        * expression.cs (IndexerAccess.DoResolveLValue): Resolve the same
        problem that the last fix but in the other sid (Set).

        * expression.cs (IndexerAccess.DoResolve): Fix a problem with a null

svn path=/trunk/mcs/; revision=13361

21 years agoCombine some if statements.
Miguel de Icaza [Tue, 8 Apr 2003 22:55:06 +0000 (22:55 -0000)]
Combine some if statements.

svn path=/trunk/mcs/; revision=13360

21 years ago2003-01-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:54:58 +0000 (22:54 -0000)]
2003-01-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>

* driver.cs: fixed bug #37187.

svn path=/trunk/mcs/; revision=13359

21 years ago2003-01-27 Pedro Martinez Juli� <yoros@wanadoo.es>
Miguel de Icaza [Tue, 8 Apr 2003 22:54:54 +0000 (22:54 -0000)]
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
hierarchy (AllGetters), else we have problems. Fixes #35653.

svn path=/trunk/mcs/; revision=13358

21 years ago2003-01-23 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:54:46 +0000 (22:54 -0000)]
2003-01-23  Miguel de Icaza  <miguel@ximian.com>

* class.cs (MethodData.Define): It is wrong for an interface
implementation to be static in both cases: explicit and implicit.
We were only handling this in one case.

Improve the if situation there to not have negations.

* class.cs (Field.Define): Turns out that we do not need to check
the unsafe bit on field definition, only on usage.  Remove the test.

svn path=/trunk/mcs/; revision=13357

21 years ago2003-01-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:54:38 +0000 (22:54 -0000)]
2003-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>

* driver.cs: use assembly.Location instead of Codebase (the latest
patch made mcs fail when using MS assemblies).

svn path=/trunk/mcs/; revision=13356

21 years ago2003-01-21 Tim Haynes <thaynes@openlinksw.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:54:34 +0000 (22:54 -0000)]
2003-01-21  Tim Haynes <thaynes@openlinksw.com>

* driver.cs: use DirectorySeparatorChar instead of a hardcoded "/" to
get the path to *corlib.dll.

svn path=/trunk/mcs/; revision=13355

21 years agodelete garbage
Miguel de Icaza [Tue, 8 Apr 2003 22:54:29 +0000 (22:54 -0000)]
delete garbage

svn path=/trunk/mcs/; revision=13354

21 years ago2003-01-21 Nick Drochak <ndrochak@gol.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:54:25 +0000 (22:54 -0000)]
2003-01-21  Nick Drochak <ndrochak@gol.com>

* cs-tokenizer.cs:
* pending.cs:
* typemanager.cs: Remove compiler warnings

svn path=/trunk/mcs/; revision=13353

21 years ago~head -4 ChangeLog~
Miguel de Icaza [Tue, 8 Apr 2003 22:54:20 +0000 (22:54 -0000)]
~head -4 ChangeLog~

svn path=/trunk/mcs/; revision=13352

21 years ago2003-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:54:12 +0000 (22:54 -0000)]
2003-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>

* cs-tokenizer.cs: little fixes to line numbering when #line is used.

svn path=/trunk/mcs/; revision=13351

21 years ago2003-01-18 Zoltan Varga <vargaz@freemail.hu>
Miguel de Icaza [Tue, 8 Apr 2003 22:54:08 +0000 (22:54 -0000)]
2003-01-18  Zoltan Varga  <vargaz@freemail.hu>

* class.cs (Constructor::Emit): Emit debugging info for constructors.

svn path=/trunk/mcs/; revision=13350

21 years ago2003-01-17 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:54:00 +0000 (22:54 -0000)]
2003-01-17  Miguel de Icaza  <miguel@ximian.com>

* cs-parser.jay: Small fix: we were not comparing the constructor
name correctly.   Thanks to Zoltan for the initial pointer.

svn path=/trunk/mcs/; revision=13349

21 years agoSet file name when specified with #line
Miguel de Icaza [Tue, 8 Apr 2003 22:53:55 +0000 (22:53 -0000)]
Set file name when specified with #line

svn path=/trunk/mcs/; revision=13348

21 years ago2003-01-15 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:53:51 +0000 (22:53 -0000)]
2003-01-15  Miguel de Icaza  <miguel@ximian.com>

* cs-parser.jay: Only perform the constructor checks here if we
are named like the class;  This will help provider a better
error.  The constructor path is taken when a type definition is
not found, but most likely the user forgot to add the type, so
report that rather than the constructor error.

svn path=/trunk/mcs/; revision=13347

21 years agoTue Jan 14 10:36:49 CET 2003 Paolo Molaro <lupus@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:53:47 +0000 (22:53 -0000)]
Tue Jan 14 10:36:49 CET 2003 Paolo Molaro <lupus@ximian.com>

* class.cs, rootcontext.cs: small changes to avoid unnecessary memory
allocations.

svn path=/trunk/mcs/; revision=13346

21 years agoAdd cleanup call.
Miguel de Icaza [Tue, 8 Apr 2003 22:53:39 +0000 (22:53 -0000)]
Add cleanup call.

svn path=/trunk/mcs/; revision=13345

21 years ago2003-01-13 Duncan Mak <duncan@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:53:35 +0000 (22:53 -0000)]
2003-01-13  Duncan Mak  <duncan@ximian.com>

* ilasm/parser/ScannerAdapter.cs: Implement the new cleanup method
in the tokenizer. This fixes the build.

* skeleton.cs (cleanpup): Rename to cleanup to make it look more consistent.

* cs-tokenizer.cs (Cleanup): Rename to 'cleanup' to make it more
consistent with other methods.

svn path=/trunk/mcs/; revision=13344

21 years agoAdd Cleanup method, also fix #region error messages.
Miguel de Icaza [Tue, 8 Apr 2003 22:53:31 +0000 (22:53 -0000)]
Add Cleanup method, also fix #region error messages.

svn path=/trunk/mcs/; revision=13343

21 years agoSun Jan 12 19:58:42 CET 2003 Paolo Molaro <lupus@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:53:27 +0000 (22:53 -0000)]
Sun Jan 12 19:58:42 CET 2003 Paolo Molaro <lupus@ximian.com>

* attribute.cs: only set GuidAttr to true when we have a
GuidAttribute.

svn path=/trunk/mcs/; revision=13342

21 years ago2003-01-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:53:23 +0000 (22:53 -0000)]
2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>

* ecore.cs:
* expression.cs:
* typemanager.cs: fixes to allow mcs compile corlib with the new
Type.IsSubclassOf fix.

svn path=/trunk/mcs/; revision=13341

21 years ago2003-01-08 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:53:15 +0000 (22:53 -0000)]
2003-01-08  Miguel de Icaza  <miguel@ximian.com>

* expression.cs (LocalVariableReference.DoResolve): Classify a
constant as a value, not as a variable.   Also, set the type for
the variable.

svn path=/trunk/mcs/; revision=13340

21 years ago2003-01-08 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:53:07 +0000 (22:53 -0000)]
2003-01-08  Miguel de Icaza  <miguel@ximian.com>

* cs-parser.jay (fixed_statement): take a type instead of a
pointer_type, so we can produce a better error message later.

* statement.cs (Fixed.Resolve): Flag types that are not pointers
as an error.

svn path=/trunk/mcs/; revision=13339

21 years ago2003-01-08 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:53:03 +0000 (22:53 -0000)]
2003-01-08  Miguel de Icaza  <miguel@ximian.com>

* statement.cs: First populate the pinned variables, then emit the
statement, then clear the variables.  Before I was emitting the
code once for each fixed piece.

svn path=/trunk/mcs/; revision=13338

21 years ago2003-01-08 Martin Baulig <martin@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:52:59 +0000 (22:52 -0000)]
2003-01-08  Martin Baulig  <martin@ximian.com>

* statement.cs (FlowBranching.MergeChild): A break in a
SWITCH_SECTION does not leave a loop.  Fixes #36155.

svn path=/trunk/mcs/; revision=13337

21 years ago2003-01-08 Martin Baulig <martin@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:52:55 +0000 (22:52 -0000)]
2003-01-08  Martin Baulig  <martin@ximian.com>

* statement.cs (FlowBranching.CheckOutParameters): `struct_params'
lives in the same number space than `param_map'.  Fixes #36154.

svn path=/trunk/mcs/; revision=13336

21 years ago2003-01-07 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:52:49 +0000 (22:52 -0000)]
2003-01-07  Miguel de Icaza  <miguel@ximian.com>

* cs-parser.jay (constructor_declaration): Set the
Constructor.ModFlags before probing for it.  This makes the
compiler report 514, 515 and 132 (the code was there, but got
broken).

svn path=/trunk/mcs/; revision=13335

21 years ago2003-01-07 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:52:45 +0000 (22:52 -0000)]
2003-01-07  Miguel de Icaza  <miguel@ximian.com>

* statement.cs (Goto.Resolve): Set `Returns' to ALWAYS.
(GotoDefault.Resolve): Set `Returns' to ALWAYS.
(GotoCase.Resolve): Set `Returns' to ALWAYS. Fixes the test-49 problem on windows

svn path=/trunk/mcs/; revision=13334

21 years agoTue Jan 7 18:32:24 CET 2003 Paolo Molaro <lupus@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:52:41 +0000 (22:52 -0000)]
Tue Jan 7 18:32:24 CET 2003 Paolo Molaro <lupus@ximian.com>

* enum.cs: create the enum static fields using the enum type.

svn path=/trunk/mcs/; revision=13333

21 years agoTue Jan 7 18:23:44 CET 2003 Paolo Molaro <lupus@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:52:37 +0000 (22:52 -0000)]
Tue Jan 7 18:23:44 CET 2003 Paolo Molaro <lupus@ximian.com>

* class.cs: don't try to create the ParamBuilder for the return
type if it's not needed (and handle it breaking for the ms runtime
anyway).

svn path=/trunk/mcs/; revision=13332

21 years agoAdd REGION flag to #region directives, and add checks to make sure that regions are...
Miguel de Icaza [Tue, 8 Apr 2003 22:52:29 +0000 (22:52 -0000)]
Add REGION flag to #region directives, and add checks to make sure that regions are being poped correctly

svn path=/trunk/mcs/; revision=13331

21 years ago2002-12-29 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:52:25 +0000 (22:52 -0000)]
2002-12-29  Miguel de Icaza  <miguel@ximian.com>

* cs-tokenizer.cs (get_cmd_arg): Fixups to allow \r to terminate
the command.   This showed up while compiling the JANET source
code, which used \r as its only newline separator.

svn path=/trunk/mcs/; revision=13330

21 years ago2002-12-28 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:52:21 +0000 (22:52 -0000)]
2002-12-28  Miguel de Icaza  <miguel@ximian.com>

* class.cs (Method.Define): If we are an operator (because it
reuses our code), then set the SpecialName and HideBySig.  #36128

svn path=/trunk/mcs/; revision=13329

21 years ago2002-12-22 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:52:12 +0000 (22:52 -0000)]
2002-12-22  Miguel de Icaza  <miguel@ximian.com>

* expression.cs (Invocation.DoResolve): Do not allow methods with
SpecialName to be invoked.

svn path=/trunk/mcs/; revision=13328

21 years ago2002-12-22 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:52:09 +0000 (22:52 -0000)]
2002-12-22  Miguel de Icaza  <miguel@ximian.com>

* expression.cs (Invocation.DoResolve): Do not allow methods with
SpecialName to be invoked.

svn path=/trunk/mcs/; revision=13327

21 years ago2002-12-21 Miguel de Icaza <miguel@ximian.com>
Miguel de Icaza [Tue, 8 Apr 2003 22:52:01 +0000 (22:52 -0000)]
2002-12-21  Miguel de Icaza  <miguel@ximian.com>

* cs-tokenizer.cs: Small fix to the parser: compute the ascii
number before adding it.

svn path=/trunk/mcs/; revision=13326