diff --git a/src/sksl/SkSLIRGenerator.cpp b/src/sksl/SkSLIRGenerator.cpp
index 0c9ee20..ec64fa9 100644
--- a/src/sksl/SkSLIRGenerator.cpp
+++ b/src/sksl/SkSLIRGenerator.cpp
@@ -1033,13 +1033,13 @@
         ASSERT(kind == Type::kVector_Kind || kind == Type::kMatrix_Kind);
         int actual = 0;
         for (size_t i = 0; i < args.size(); i++) {
-            if (args[i]->fType.kind() == Type::kVector_Kind || 
+            if (args[i]->fType.kind() == Type::kVector_Kind ||
                 args[i]->fType.kind() == Type::kMatrix_Kind) {
-                int columns = args[i]->fType.columns();
-                int rows = args[i]->fType.rows();
-                args[i] = this->coerce(std::move(args[i]), 
-                                       type.componentType().toCompound(fContext, columns, rows));
-                if (!args[i]) {
+                if (type.componentType().isNumber() !=
+                    args[i]->fType.componentType().isNumber()) {
+                    fErrors.error(position, "'" + args[i]->fType.description() + "' is not a valid "
+                                            "parameter to '" + type.description() +
+                                            "' constructor");
                     return nullptr;
                 }
                 actual += args[i]->fType.rows() * args[i]->fType.columns();
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);"
