123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- namespace Burst.Compiler.IL.Tests.Shared
- {
- internal class Patterns
- {
- [TestCompiler(2)]
- [TestCompiler(1)]
- [TestCompiler(0)]
- public static int PropertyPattern(int x)
- {
- var point = new Point { X = x, Y = 5 };
-
- return point switch
- {
- { X: 2 } => 10,
- { X: 1 } => 5,
- _ => 0
- };
- }
-
- private struct Point
- {
- public int X;
- public int Y;
- }
-
- [TestCompiler(1, 2)]
- [TestCompiler(2, 4)]
- [TestCompiler(0, 0)]
- public static int TuplePattern(int x, int y)
- {
- return (x, y) switch
- {
- (1, 2) => 10,
- (2, 4) => 5,
- _ => 0
- };
- }
-
- private struct DeconstructablePoint
- {
- public int X;
- public int Y;
-
- public void Deconstruct(out int x, out int y) => (x, y) = (X, Y);
- }
-
- [TestCompiler(1, -1)]
- [TestCompiler(-1, 1)]
- [TestCompiler(1, 1)]
- [TestCompiler(-1, -1)]
- public static int PositionalPattern(int pointX, int pointY)
- {
- var point = new DeconstructablePoint { X = pointX, Y = pointY };
-
- return point switch
- {
- (0, 0) => 0,
- var (x, y) when x > 0 && y > 0 => 1,
- var (x, y) when x < 0 && y > 0 => 2,
- var (x, y) when x < 0 && y < 0 => 3,
- var (x, y) when x > 0 && y < 0 => 4,
- var (_, _) => 5
- };
- }
- }
- }
|