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();
}
}