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

50 lines
1008 B
C#

using System;
class Foo {
static int t_count = 0, f_count = 0;
public static int Main ()
{
Console.WriteLine (t && f);
if (t_count != 1)
return 1;
if (f_count != 1)
return 2;
Console.WriteLine ();
Console.WriteLine (t && t);
if (t_count != 3)
return 3;
if (f_count != 1)
return 4;
Console.WriteLine ();
return 0;
}
static MyBool t { get { Console.WriteLine ("t"); t_count++; return new MyBool (true); }}
static MyBool f { get { Console.WriteLine ("f"); f_count++; return new MyBool (false); }}
}
public struct MyBool {
bool v;
public MyBool (bool v) { this.v = v; }
public static MyBool operator & (MyBool x, MyBool y) {
return new MyBool (x.v & y.v);
}
public static MyBool operator | (MyBool x, MyBool y) {
return new MyBool (x.v | y.v);
}
public static bool operator true (MyBool x) {
return x.v;
}
public static bool operator false (MyBool x) {
return ! x.v;
}
public override string ToString () { return v.ToString (); }
}