added DSL Modifiers

Change-Id: Ie1b0b8068b487905691b20e318c7898653763a25
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/359757
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 7dc3858..f191633 100644
--- a/tests/SkSLDSLTest.cpp
+++ b/tests/SkSLDSLTest.cpp
@@ -1111,3 +1111,38 @@
         Ceil(a == b).release();
     }
 }
+
+DEF_GPUTEST_FOR_MOCK_CONTEXT(DSLModifiers, r, ctxInfo) {
+    AutoDSLContext context(ctxInfo.directContext()->priv().getGpu());
+
+    Var v1(kConst_Modifier, kInt, "v1");
+    Statement d1 = Declare(v1);
+    REPORTER_ASSERT(r, d1.release()->description() == "const int v1;");
+
+    // Most modifiers require an appropriate context to be legal. We can't yet give them that
+    // context, so we can't as yet Declare() variables with these modifiers.
+    // TODO: better tests when able
+    Var v2(kIn_Modifier, kInt, "v2");
+    REPORTER_ASSERT(r, DSLWriter::Var(v2).modifiers().fFlags == SkSL::Modifiers::kIn_Flag);
+
+    Var v3(kOut_Modifier, kInt, "v3");
+    REPORTER_ASSERT(r, DSLWriter::Var(v3).modifiers().fFlags == SkSL::Modifiers::kOut_Flag);
+
+    Var v4(kUniform_Modifier, kInt, "v4");
+    REPORTER_ASSERT(r, DSLWriter::Var(v4).modifiers().fFlags == SkSL::Modifiers::kUniform_Flag);
+
+    Var v5(kFlat_Modifier, kInt, "v5");
+    REPORTER_ASSERT(r, DSLWriter::Var(v5).modifiers().fFlags == SkSL::Modifiers::kFlat_Flag);
+
+    Var v6(kNoPerspective_Modifier, kInt, "v6");
+    REPORTER_ASSERT(r, DSLWriter::Var(v6).modifiers().fFlags ==
+                       SkSL::Modifiers::kNoPerspective_Flag);
+
+    Var v7(kIn_Modifier | kOut_Modifier, kInt, "v7");
+    REPORTER_ASSERT(r, DSLWriter::Var(v7).modifiers().fFlags ==
+                       (SkSL::Modifiers::kIn_Flag | SkSL::Modifiers::kOut_Flag));
+
+    Var v8(kInOut_Modifier, kInt, "v8");
+    REPORTER_ASSERT(r, DSLWriter::Var(v8).modifiers().fFlags ==
+                       (SkSL::Modifiers::kIn_Flag | SkSL::Modifiers::kOut_Flag));
+}