mirror of
https://github.com/github/codeql.git
synced 2025-12-17 09:13:20 +01:00
180 lines
3.2 KiB
C#
180 lines
3.2 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;
|
|
}
|
|
}
|
|
|
|
void M15(bool b)
|
|
{
|
|
var s = b switch { true => "a", false => "b" };
|
|
if (b)
|
|
System.Console.WriteLine($"a = {s}");
|
|
else
|
|
System.Console.WriteLine($"b = {s}");
|
|
}
|
|
|
|
void M16(int i)
|
|
{
|
|
switch (i)
|
|
{
|
|
case 1:
|
|
case 2:
|
|
System.Console.WriteLine("1 or 2");
|
|
break;
|
|
case 3:
|
|
System.Console.WriteLine("3");
|
|
break;
|
|
default:
|
|
System.Console.WriteLine("def");
|
|
break;
|
|
}
|
|
}
|
|
}
|