Added Poison values to SkSL to improve DSL error handling

This also tightens up the rules around releasing DSL objects.

Bug: skia:12133
Change-Id: I11a6d8fbcec58374f7b5ed5ced1c5c112e2b7cc7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/421323
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
diff --git a/tests/SkSLDSLTest.cpp b/tests/SkSLDSLTest.cpp
index e005284..fd25240 100644
--- a/tests/SkSLDSLTest.cpp
+++ b/tests/SkSLDSLTest.cpp
@@ -689,7 +689,7 @@
     {
         ExpectError error(r, "error: '+' cannot operate on 'bool'\n");
         Var c(kBool_Type);
-        DSLExpression(+c);
+        DSLExpression(+c).release();
     }
 }
 
@@ -728,7 +728,7 @@
     {
         ExpectError error(r, "error: '-' cannot operate on 'bool'\n");
         Var c(kBool_Type);
-        DSLExpression(-c);
+        DSLExpression(-c).release();
     }
 }
 
@@ -1541,12 +1541,12 @@
 
     {
         ExpectError error(r, "error: expected 'bool', but found 'int'\n");
-        DSLExpression x = Select(a, 1, -1);
+        Select(a, 1, -1).release();
     }
 
     {
         ExpectError error(r, "error: ternary operator result mismatch: 'float2', 'float3'\n");
-        DSLExpression x = Select(a > 0, Float2(1), Float3(1));
+        Select(a > 0, Float2(1), Float3(1)).release();
     }
 }
 
@@ -1669,7 +1669,7 @@
 
     {
         ExpectError error(r, "error: expected 'bool', but found 'int'\n");
-        DSLStatement x = While(7, Block());
+        While(7, Block()).release();
     }
 }
 
@@ -1682,17 +1682,17 @@
 
     {
         ExpectError error(r, "error: expected 'int', but found 'bool'\n");
-        DSLExpression x = a[true];
+        a[true].release();
     }
 
     {
         ExpectError error(r, "error: expected array, but found 'int'\n");
-        DSLExpression x = b[0];
+        b[0].release();
     }
 
     {
         ExpectError error(r, "error: index -1 out of range for 'int[5]'\n");
-        DSLExpression x = a[-1];
+        a[-1].release();
     }
 }