blob: 335f075e997d785da861d1ce380f73d072d4801f (
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
|
// Compiler options: -langversion:experimental
using System;
class RecursiveNamedPattern
{
public static int Main ()
{
if (Switch_1 (null) != 4)
return 1;
if (Switch_1 ("x") != 5)
return 2;
if (Switch_1 (1) != 1)
return 3;
// if (Switch_1 (new C1 ()) != 3)
// return 4;
if (Switch_1 ((byte?) 1) != 1)
return 5;
if (Switch_2 (new C1 ()) != 3)
return 10;
if (Switch_2 (null) != 2)
return 11;
Console.WriteLine ("ok");
return 0;
}
static int Switch_1 (object o)
{
switch (o) {
case 1:
return 1;
// case C1 (3):
// return 2;
// case C1 (2):
// return 3;
case null:
return 4;
default:
return 5;
}
}
static int Switch_2 (C1 o)
{
switch (o) {
case null:
return 2;
}
return 3;
}
}
public class C1
{
public static bool operator is (C1 c1, out int i)
{
i = 2;
return true;
}
}
|