summaryrefslogtreecommitdiff
path: root/mcs/tests/test-579.cs
blob: 1f49f63c7650ecb05e0d0e870d1ac32d6b1ffd08 (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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// Compiler options: -warnaserror

public class TestCase
{
	public static int Main ()
	{
		if (Test1 () != 0)
			return 1;

		if (Test2 () != 0)
			return 2;

		return 0;
	}

	static int Test1 ()
	{
		int i = 0;
		{
			goto A;
			A:
				i += 3;
		}
		{
			goto A;
			A:
				i *= 4;
		}
		
		if (i != 12)
			return 1;
			
		return 0;
	}

	static int Test2 ()
	{
		int i = 0;

		while (true) {
			{
				goto A;
				A:
					i += 3;
				break;
			}
		}

		if (i != 3)
			return 1;

		return 0;
	}

	static int Test3 ()
	{
		int i = 0;

		do {
			{
				goto A;
				A:
					i += 3;
				goto X;
				X:
				break;
			}
#pragma warning disable 162, 429
		} while (i > 0);
#pragma warning restore 162, 429
		
		if (i != 3)
			return 1;

		return 0;
	}
}