blob: e33e525582eb067efe4098784f13e8a32bbfc768 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
//
// 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);
}
}
|