Add unit test for self-referential initializer expressions.

These don't compile in GLSL, so they shouldn't compile in SkSL either--
and fortunately, they do not.

(In C++, and consequently in Metal, these expressions are considered
legal by the grammar and do compile, but generate garbage output.)

Change-Id: I6c7bea70b3d91677ccd8fcbad1eba123d655e856
Bug: skia:10694
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/329359
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
diff --git a/gn/sksl_tests.gni b/gn/sksl_tests.gni
index 07d4292..56a7159 100644
--- a/gn/sksl_tests.gni
+++ b/gn/sksl_tests.gni
@@ -107,6 +107,7 @@
   "$_tests/sksl/errors/ReturnFromVoid.sksl",
   "$_tests/sksl/errors/ReturnMissingValue.sksl",
   "$_tests/sksl/errors/ReturnTypeMismatch.sksl",
+  "$_tests/sksl/errors/SelfReferentialInitializerExpression.sksl",
   "$_tests/sksl/errors/SpuriousFloat.sksl",
   "$_tests/sksl/errors/StaticIfTest.sksl",
   "$_tests/sksl/errors/StaticSwitchConditionalBreak.sksl",
diff --git a/tests/sksl/errors/SelfReferentialInitializerExpression.sksl b/tests/sksl/errors/SelfReferentialInitializerExpression.sksl
new file mode 100644
index 0000000..3d06758
--- /dev/null
+++ b/tests/sksl/errors/SelfReferentialInitializerExpression.sksl
@@ -0,0 +1,2 @@
+float foo(float v) { return v; }
+void main() { float x = foo(x); }
diff --git a/tests/sksl/errors/golden/SelfReferentialInitializerExpression.glsl b/tests/sksl/errors/golden/SelfReferentialInitializerExpression.glsl
new file mode 100644
index 0000000..5e2fa02
--- /dev/null
+++ b/tests/sksl/errors/golden/SelfReferentialInitializerExpression.glsl
@@ -0,0 +1,4 @@
+### Compilation failed:
+
+error: 2: unknown identifier 'x'
+1 error