a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
113 lines
1.6 KiB
C#
113 lines
1.6 KiB
C#
using System;
|
|
|
|
public delegate long MyDelegate (int a);
|
|
|
|
public interface X
|
|
{
|
|
event EventHandler Foo;
|
|
|
|
event MyDelegate TestEvent;
|
|
}
|
|
|
|
public class Y : X
|
|
{
|
|
static int a = 0;
|
|
|
|
event EventHandler X.Foo {
|
|
add {
|
|
}
|
|
|
|
remove {
|
|
}
|
|
}
|
|
|
|
public event EventHandler Foo;
|
|
|
|
public event MyDelegate TestEvent;
|
|
|
|
public int Test ()
|
|
{
|
|
X x = this;
|
|
|
|
Foo += new EventHandler (callback1);
|
|
TestEvent += new MyDelegate (callback2);
|
|
|
|
x.Foo += new EventHandler (callback3);
|
|
|
|
if (a != 0)
|
|
return 1;
|
|
|
|
Foo (this, new EventArgs ());
|
|
if (a != 1)
|
|
return 2;
|
|
|
|
if (TestEvent (2) != 4)
|
|
return 3;
|
|
|
|
if (a != 2)
|
|
return 4;
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
private static void callback1 (object sender, EventArgs e)
|
|
{
|
|
a = 1;
|
|
}
|
|
|
|
private static long callback2 (int b)
|
|
{
|
|
a = b;
|
|
return a * a;
|
|
}
|
|
|
|
private static void callback3 (object sender, EventArgs e)
|
|
{
|
|
a = 3;
|
|
}
|
|
}
|
|
|
|
public class Z : Y
|
|
{
|
|
public delegate int SomeEventHandler();
|
|
public static event SomeEventHandler BuildStarted;
|
|
|
|
static int a ()
|
|
{
|
|
return 1;
|
|
}
|
|
public static int Main ()
|
|
{
|
|
Z z = new Z ();
|
|
|
|
int result = z.Test ();
|
|
|
|
if (result != 0)
|
|
return result;
|
|
|
|
if (BuildStarted != null) {
|
|
BuildStarted();
|
|
}
|
|
BuildStarted = new SomeEventHandler (a);
|
|
if (BuildStarted () != 1)
|
|
return 50;
|
|
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
//
|
|
// This class is just to test a bug in mcs; where we used to fail
|
|
// when accessing a static event, from an instance method.
|
|
//
|
|
public class Static {
|
|
public static event EventHandler Test;
|
|
|
|
public void Fire()
|
|
{
|
|
if ( Test != null )
|
|
Test (null, null);
|
|
}
|
|
}
|