I've found another case where the compiler should give a different error (at 
the moment it crashes).

public class Test {
        public static void Main ()
        {
                byte b = 8;
                int i = 256;

                Increment (ref b);
                System.Console.WriteLine ("8 + 1 = {0}", b);

                Increment (ref i);
                System.Console.WriteLine ("256 + 1 = {0}", i);
        }

        public static void Increment (ref int arg)
        {
                arg += 1;
        }

        public static void Increment (ref byte arg)
        {
                // reference cast - not allowed
                Increment (ref (int) arg);
        }
}

Who needs specifications to test against when you have a twisted mind?  
Seriouslly though, the above code could be legal - mcs might be expected to 
create a temporary variable of type int, assign the byte value to it, call 
the other Increment overload with it, and then assign its value back to the 
byte argument - so a check against the microsoft compiler is necessary.

Alan
_______________________________________________
Mono-list maillist  -  [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to