fixed skslc's handling of ivec(vec)

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4222

Change-Id: I9b32067af51f3a04efa702cf2eb1ac1ed480df6a
Reviewed-on: https://skia-review.googlesource.com/4222
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/tests/SkSLErrorTest.cpp b/tests/SkSLErrorTest.cpp
index 3afb64f..9e89b71 100644
--- a/tests/SkSLErrorTest.cpp
+++ b/tests/SkSLErrorTest.cpp
@@ -94,6 +94,12 @@
                  "void main() { vec2 x = vec2(1.0, false); }", 
                  "error: 1: expected 'float', but found 'bool'\n1 error\n");
     test_failure(r,
+                 "void main() { vec2 x = vec2(bvec2(false)); }",
+                 "error: 1: 'bvec2' is not a valid parameter to 'vec2' constructor\n1 error\n");
+    test_failure(r,
+                 "void main() { bvec2 x = bvec2(vec2(1)); }",
+                 "error: 1: 'vec2' is not a valid parameter to 'bvec2' constructor\n1 error\n");
+    test_failure(r,
                  "void main() { bool x = bool(1.0); }",
                  "error: 1: cannot construct 'bool'\n1 error\n");
     test_failure(r,
diff --git a/tests/SkSLGLSLTest.cpp b/tests/SkSLGLSLTest.cpp
index ad1fe0d..610ff2b 100644
--- a/tests/SkSLGLSLTest.cpp
+++ b/tests/SkSLGLSLTest.cpp
@@ -368,6 +368,30 @@
          "}\n");
 }
 
+DEF_TEST(SkSLVectorConstructors, r) {
+    test(r,
+         "vec2 v1 = vec2(1);"
+         "vec2 v2 = vec2(1, 2);"
+         "vec2 v3 = vec2(vec2(1));"
+         "vec2 v4 = vec2(vec3(1));"
+         "vec3 v5 = vec3(vec2(1), 1.0);"
+         "vec3 v6 = vec3(vec4(1, 2, 3, 4));"
+         "ivec2 v7 = ivec2(1);"
+         "ivec2 v8 = ivec2(vec2(1, 2));"
+         "vec2 v9 = vec2(ivec2(1, 2));",
+         default_caps(),
+         "#version 400\n"
+         "vec2 v1 = vec2(1.0);\n"
+         "vec2 v2 = vec2(1.0, 2.0);\n"
+         "vec2 v3 = vec2(1.0);\n"
+         "vec2 v4 = vec2(vec3(1.0));\n"
+         "vec3 v5 = vec3(vec2(1.0), 1.0);\n"
+         "vec3 v6 = vec3(vec4(1.0, 2.0, 3.0, 4.0));\n"
+         "ivec2 v7 = ivec2(1);\n"
+         "ivec2 v8 = ivec2(vec2(1.0, 2.0));\n"
+         "vec2 v9 = vec2(ivec2(1, 2));\n");
+}
+
 DEF_TEST(SkSLArrayConstructors, r) {
     test(r,
          "float test1[] = float[](1, 2, 3, 4);"