Added DSL support for static if & switch statements
Change-Id: If11443997ae29266bf46da77c1e4f9583fa3f5a5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/402577
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
diff --git a/tests/SkSLDSLTest.cpp b/tests/SkSLDSLTest.cpp
index de3b640..8d2ae37 100644
--- a/tests/SkSLDSLTest.cpp
+++ b/tests/SkSLDSLTest.cpp
@@ -1272,6 +1272,9 @@
Statement y = If(a > b, a -= b, b -= a);
EXPECT_EQUAL(y, "if ((a > b)) (a -= b); else (b -= a);");
+ Statement z = StaticIf(a > b, a -= b, b -= a);
+ EXPECT_EQUAL(z, "@if ((a > b)) (a -= b); else (b -= a);");
+
{
ExpectError error(r, "error: expected 'bool', but found 'float'\n");
If(a + b, a -= b).release();
@@ -1325,6 +1328,21 @@
}
)");
+ Statement y = StaticSwitch(b,
+ Case(0, a = 0, Break()),
+ Case(1, a = 1, Continue()),
+ Case(2, a = 2 /*Fallthrough*/),
+ Default(Discard())
+ );
+ EXPECT_EQUAL(y, R"(
+ @switch (b) {
+ case 0: (a = 0.0); break;
+ case 1: (a = 1.0); continue;
+ case 2: (a = 2.0);
+ default: discard;
+ }
+ )");
+
EXPECT_EQUAL(Switch(b),
"switch (b) {}");