60 lines
843 B
C#
Raw Permalink Normal View History

//
// Test that the foreach statement generated by mcs invokes the Dispose()
// method even if the enumerator class returned by GetEnumerator () does not
// implement IDisposable.
//
using System;
public class Enumerator {
int counter;
public Enumerator () {
counter = 3;
}
public bool MoveNext () {
return (counter -- > 0);
}
public char Current {
get {
return 'a';
}
}
}
class RealEnumerator : Enumerator, IDisposable {
Coll c;
public RealEnumerator (Coll c) {
this.c = c;
}
public void Dispose () {
c.disposed = true;
}
}
public class Coll {
public bool disposed;
public Enumerator GetEnumerator () {
return new RealEnumerator (this);
}
}
class Test {
public static int Main(String[] args)
{
Coll coll = new Coll ();
foreach (char c in coll) {
}
return (coll.disposed ? 0 : 1);
}
}