We use negative numbers for the compiler, and leave the possitive
numbers to match the Microsoft numbers.

NOTE: I am now moving to use numbers above 6000 instead of negative
numbers, as they look nicer on the debugging output.

-1	An Primary Expression was parsed, when a Type was expected.
	This happens because my parser knowledge is limited, and I
	am not good at writing grammars.  It is still an error,
	but if I were smarter, I would have found a Bison/Yacc way
	of handling it.

-2	Internal error, an interface is being defined inside an
	interface (This should never happen).

-3      Constant type is not one of sbyte, byte, short, ushort, int,
	uint, long, ulong, char, float, double, decimal, bool, string, enum
	or null type. 

-5      A search for a name on a Type returned matches that contain
	methods and non-methods.  They have the same name, and I do
	not know how this is possible to begin with.

-6      Generic internal compiler error.

-7      Internal compiler error/library error: no default constructor
	for a built-in type.  Ie, decimal (int 32)

-8	User-defined conversion cannot convert from or to object type.

-9	User-defined conversion cannot convert from or to an interface type.

-10	User-defined conversion cannot convert between types that derive 
	from each other.

-12     More than one integral conversion exists for the type on a
	switch statement.

-13	No return with a value found.  Warning, since we currently
	do not perform flow analysis, and can not tell whether a
	ret is required or not.

-14     Invalid number passed to probe

-15	Can not locate default assembly path

-16	Can not use System.Enum.ToObject (type, ConstantValue) with
	user defined types.

-17     A type has already been defined (try --nostdlib)

-18	Do not know how to generate debugging information for this platform.

-19     Can not find required utility function in the core libraries.

-20	Cannot find attribute type Blah (maybe you forgot to set the 
	usage using the AttributeUsage attribute ?).

-21	Bug in Microsoft compiler while applying named attribute for
	StructLayout.CharSet value.

-22     Location of previous error 

-23	.NET runtime error when encoding attributes whose constructor
	takes an object, but an enumeration value that is boxed is
	passed.

	Sample:
		using System.ComponentModel;
		[DefaultValue (CollectionChangeAction.Add)]
		class X { static void Main () {	} }


-24     .NET runtime bug when trying to set custom attributes on the
	return type of a method


-25     Generic parse error

-26     Corlib compilation is not supported in MS.NET

-27	Attribute resolved to two different types

-28	(retired)

-29     Use -option instead of --option: to move people to the new
	command line handling.
   
-30     This version of the runtime does not support making pinned local variables.  
        This code may cause errors on a runtime with a moving GC

-31     Internal compiler error during the method emit phase.

-32     Internal compiler error during parsing.

-33     Contravariant type parameters cannot be the return type.

-34     Contravariant type parameters can only be used as type arguments in
	contravariant positions.

-35     Covariant type parameters can only be used as type arguments in
	covariant positions.

-36     Variant type parameters can only be used with interface and
        delegate types.

-37     Contravariant type parameters cannot be byref method parameters.

-38     Covariant type parameters cannot be used as method parameters.

----------

Errors that we have allocated that will have corresponding errors in
the Microsoft C# compiler:

-200    Constraints for class defined, but there is no parameter list.

-201    Class containing main method is generic.

-202    Can not use a type parameter in an attribute.

-203    Can not use type parameters as unmanaged types.

-204	yield statement in something which is not a method-body,
	accessor-body or operator-body

-205    A method containing a yield statement is not IEnumerator.

-206    Return statement not allowed inside iterators.

-207    A parameter in an enumerator method contains out or ref

-208    Yield statement appears inside finally clause

-209    Yield statment appears in anonymous method.

-210    Fixed code not allowed inside iterators.

-211    Array expression passed to attribute is not unidimensional

-212    An Array creation expression is present, but the array is not
	initialized.

-213	This feature requires v2 support.

-214    Generic class can not have attribute as its parent class

-215    Taking the address of a parameter in an iterator is not allowed.

-216    Can not use a type parameters as base class

-217	Wrong number of type parameters

-218	Invalid constraints clause

-219	Type argument doesn't meet constraints.

-220	Cannot resolve constructed type

-221    params modifier present in anonymous method declaration

-222    yield statement only available in C# 2.0 mode