Add basic support for array constructors

Add limited support for parsing array constructors and writing them out as
GLSL code.

Still missing from this version: HLSL output, array support in
initializer lists, arrays with implicit size.

BUG=angleproject:941

Change-Id: I7febf80923c4cd0b730399f1f49f9456cf3668e9
Reviewed-on: https://chromium-review.googlesource.com/260572
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
diff --git a/src/compiler/translator/OutputHLSL.cpp b/src/compiler/translator/OutputHLSL.cpp
index c3240f5..11cf183 100644
--- a/src/compiler/translator/OutputHLSL.cpp
+++ b/src/compiler/translator/OutputHLSL.cpp
@@ -2202,6 +2202,10 @@
       case EOpConstructMat4:    outputConstructor(visit, node->getType(), "mat4", node->getSequence());  break;
       case EOpConstructStruct:
         {
+            if (node->getType().isArray())
+            {
+                UNIMPLEMENTED();
+            }
             const TString &structName = StructNameString(*node->getType().getStruct());
             mStructureHLSL->addConstructor(node->getType(), structName, node->getSequence());
             outputTriplet(visit, (structName + "_ctor(").c_str(), ", ", ")");
@@ -2829,6 +2833,10 @@
 
 void OutputHLSL::outputConstructor(Visit visit, const TType &type, const char *name, const TIntermSequence *parameters)
 {
+    if (type.isArray())
+    {
+        UNIMPLEMENTED();
+    }
     TInfoSinkBase &out = getInfoSink();
 
     if (visit == PreVisit)