a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
66 lines
684 B
C#
66 lines
684 B
C#
using System;
|
|
|
|
struct S : IDisposable
|
|
{
|
|
public static int hit;
|
|
|
|
void IDisposable.Dispose ()
|
|
{
|
|
hit++;
|
|
}
|
|
|
|
public void Dispose ()
|
|
{
|
|
throw new ApplicationException ();
|
|
}
|
|
}
|
|
|
|
class C : IDisposable
|
|
{
|
|
|
|
void IDisposable.Dispose ()
|
|
{
|
|
}
|
|
|
|
public void Dispose ()
|
|
{
|
|
throw new ApplicationException ();
|
|
}
|
|
}
|
|
|
|
class Test
|
|
{
|
|
public static int Main ()
|
|
{
|
|
using (new S? ()) {
|
|
}
|
|
|
|
if (S.hit != 0)
|
|
return 1;
|
|
|
|
using (new C ()) {
|
|
}
|
|
|
|
var s = new S ();
|
|
using (s) {
|
|
}
|
|
|
|
if (S.hit != 1)
|
|
return 2;
|
|
|
|
GenMethod (s);
|
|
|
|
if (S.hit != 2)
|
|
return 3;
|
|
|
|
Console.WriteLine ("ok");
|
|
return 0;
|
|
}
|
|
|
|
static void GenMethod<T> (T t) where T : IDisposable
|
|
{
|
|
using (t) {
|
|
}
|
|
}
|
|
}
|