Add test for incomplete expressions.

The ExpressionStatement currently eliminates dangling references without
reporting them as an error. This happens due to optimization; these
expressions (being meaningless) have no side effects, and so the
optimizer replaces them with Nop. When the optimizer is off, these
programs trigger an assert:

https://osscs.corp.google.com/skia/skia/+/main:src/sksl/SkSLAnalysis.cpp;l=582;drc=e7a953524787e3bd0c437ec52de4e40986689825

A followup CL will fix ExpressionStatements so that they report
incomplete expressions as an error.

Change-Id: Ica49166032e670749fc1b4e7a869fbab03364d4f
Bug: skia:12472
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/469524
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
diff --git a/gn/sksl_tests.gni b/gn/sksl_tests.gni
index 58b8b96..3939f5d 100644
--- a/gn/sksl_tests.gni
+++ b/gn/sksl_tests.gni
@@ -63,6 +63,8 @@
   "/sksl/errors/PrecisionQualifiersDisallowed.sksl",
   "/sksl/errors/IfTypeMismatch.sksl",
   "/sksl/errors/InVarWithInitializerExpression.sksl",
+  "/sksl/errors/IncompleteExpression.sksl",
+  "/sksl/errors/IncompleteFunctionCall.sksl",
   "/sksl/errors/InterfaceBlockScope.sksl",
   "/sksl/errors/InterfaceBlockStorageModifiers.sksl",
   "/sksl/errors/InterfaceBlockWithNoMembers.sksl",
diff --git a/resources/sksl/errors/IncompleteExpression.sksl b/resources/sksl/errors/IncompleteExpression.sksl
new file mode 100644
index 0000000..d8f361f
--- /dev/null
+++ b/resources/sksl/errors/IncompleteExpression.sksl
@@ -0,0 +1,4 @@
+half4 main(float2 xy) {
+    int;
+    return half4(0);
+}
diff --git a/resources/sksl/errors/IncompleteFunctionCall.sksl b/resources/sksl/errors/IncompleteFunctionCall.sksl
new file mode 100644
index 0000000..45a2763
--- /dev/null
+++ b/resources/sksl/errors/IncompleteFunctionCall.sksl
@@ -0,0 +1,4 @@
+half4 main(float2 xy) {
+    mix;
+    return half4(0);
+}
diff --git a/tests/sksl/errors/IncompleteExpression.glsl b/tests/sksl/errors/IncompleteExpression.glsl
new file mode 100644
index 0000000..0d929f2
--- /dev/null
+++ b/tests/sksl/errors/IncompleteExpression.glsl
@@ -0,0 +1,5 @@
+
+out vec4 sk_FragColor;
+vec4 main() {
+    return vec4(0.0);
+}
diff --git a/tests/sksl/errors/IncompleteFunctionCall.glsl b/tests/sksl/errors/IncompleteFunctionCall.glsl
new file mode 100644
index 0000000..0d929f2
--- /dev/null
+++ b/tests/sksl/errors/IncompleteFunctionCall.glsl
@@ -0,0 +1,5 @@
+
+out vec4 sk_FragColor;
+vec4 main() {
+    return vec4(0.0);
+}