You've already forked linux-packaging-mono
Imported Upstream version 3.12.0
Former-commit-id: cf92446697332992ec36726e78eb8703e1f259d7
This commit is contained in:
77
mcs/tests/test-pattern-04.cs
Normal file
77
mcs/tests/test-pattern-04.cs
Normal file
@ -0,0 +1,77 @@
|
||||
// Compiler options: -langversion:experimental
|
||||
|
||||
using System;
|
||||
|
||||
class RecursivePattern
|
||||
{
|
||||
static int Main ()
|
||||
{
|
||||
object o = null;
|
||||
bool b = o is C1 (8);
|
||||
if (b)
|
||||
return 1;
|
||||
|
||||
o = new C1 ();
|
||||
b = o is C1 (-4);
|
||||
if (b)
|
||||
return 2;
|
||||
|
||||
b = o is C1 (8);
|
||||
if (!b)
|
||||
return 3;
|
||||
|
||||
b = o is C1 (C1 (9), C1 (8));
|
||||
if (b)
|
||||
return 4;
|
||||
|
||||
b = o is C1 (C1 (*), C1 (8));
|
||||
if (!b)
|
||||
return 41;
|
||||
|
||||
b = o is C1 (0);
|
||||
if (b)
|
||||
return 5;
|
||||
|
||||
ValueType vt = new S ();
|
||||
b = vt is S (null, 0);
|
||||
if (b)
|
||||
return 6;
|
||||
|
||||
b = vt is S (8, 0);
|
||||
if (b)
|
||||
return 7;
|
||||
|
||||
b = vt is S (8, 2);
|
||||
if (!b)
|
||||
return 8;
|
||||
|
||||
Console.WriteLine ("ok");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
class C1
|
||||
{
|
||||
public static bool operator is (C1 c, out int x)
|
||||
{
|
||||
x = 8;
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool operator is (C1 c, out C1 c2, out C1 c3)
|
||||
{
|
||||
c2 = null;
|
||||
c3 = null;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
struct S
|
||||
{
|
||||
public static bool operator is (S s, out int? x, out decimal d)
|
||||
{
|
||||
x = 8;
|
||||
d = 2;
|
||||
return true;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user