2015-01-13 10:44:36 +00:00
|
|
|
// 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;
|
|
|
|
|
2015-04-07 09:35:12 +01:00
|
|
|
// if (Switch_1 (new C1 ()) != 3)
|
|
|
|
// return 4;
|
2015-01-13 10:44:36 +00:00
|
|
|
|
|
|
|
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;
|
2015-04-07 09:35:12 +01:00
|
|
|
// case C1 (3):
|
|
|
|
// return 2;
|
|
|
|
// case C1 (2):
|
|
|
|
// return 3;
|
2015-01-13 10:44:36 +00:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|