Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

62 lines
1.1 KiB
C#

using System;
namespace Mine {
public class Blah {
public static int operator + (Blah i, Blah j)
{
Console.WriteLine ("Base class binary + operator");
return 2;
}
public static implicit operator int (Blah i)
{
Console.WriteLine ("Blah->int");
return 3;
}
public static implicit operator byte (Blah i)
{
Console.WriteLine ("Blah->byte");
return 0;
}
public static implicit operator short (Blah i)
{
Console.WriteLine ("Blah->short");
return 1;
}
}
public class Foo : Blah {
public static int Main ()
{
int number = new Foo () + new Foo () ;
Console.WriteLine (number);
Foo tmp = new Foo ();
int k = tmp;
Console.WriteLine ("Convert from Foo to float");
float f = tmp;
Console.WriteLine ("Converted");
// The following will not work till we fix our UserCast::Emit
// to convert the return value on the stack.
if (f == 3)
Console.WriteLine ("Best implicit conversion selected correctly.");
Console.WriteLine ("F is {0}", f);
if (number == 2 && k == 3)
return 0;
else
return 1;
}
}
}