Files
codeql/csharp/ql/test/library-tests/controlflow/graph/Switch.cs
2019-09-20 14:22:31 +01:00

154 lines
2.6 KiB
C#

using System;
class Switch
{
void M1(object o)
{
switch (o) { }
}
void M2(object o)
{
switch (o)
{
case "a":
return;
case 0:
throw new Exception();
case null:
goto default;
case int i:
if (o == null)
return;
goto case 0;
case string s when s.Length > 0 && s != "a":
Console.WriteLine(s);
return;
case double d when Throw():
Label:
return;
default:
goto Label;
}
}
void M3()
{
switch (Throw())
{
default:
return;
}
}
void M4(object o)
{
switch (o)
{
case int _:
break;
case bool _ when o != null:
break;
}
}
void M5()
{
switch (1 + 2)
{
case 2 :
break;
case 3 :
break;
}
}
void M6(string s)
{
switch ((object)s)
{
case int _ :
break;
case "" :
break;
}
}
bool M7(int i, int j)
{
switch (i)
{
case 1 :
return true;
case 2 :
if (j > 2)
break;
return true;
}
return false;
}
bool M8(object o)
{
switch (o)
{
case int _ :
return true;
}
return false;
}
int M9(string s)
{
switch (s?.Length)
{
case 0 : return 0;
case 1 : return 1;
}
return -1;
}
static bool Throw() => throw new Exception();
int M10(string s)
{
switch (s.Length)
{
case 3 when s=="foo" : return 1;
case 2 when s=="fu" : return 2;
}
return -1;
}
void M11(object o)
{
if (o switch { bool b => b, _ => false })
return;
}
string M12(object o)
{
return (o switch { string s => s, _ => null })?.ToString();
}
int M13(int i)
{
switch (i)
{
default: return -1;
case 1: return 1;
case 2: return 2;
}
}
int M14(int i)
{
switch (i)
{
case 1: return 1;
default: return -1;
case 2: return 2;
}
}
}