Share a single TOperator enum among all constructor AST nodes

The code is a lot simpler when the type information is only carried
in the TType of the node, instead of being partially duplicated in the
enum value.

BUG=angleproject:1490
TEST=angle_unittests

Change-Id: I956376225ec01e469c7afb7378fa48cc097c0cea
Reviewed-on: https://chromium-review.googlesource.com/498768
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/compiler/translator/VersionGLSL.cpp b/src/compiler/translator/VersionGLSL.cpp
index 938325b..8168876 100644
--- a/src/compiler/translator/VersionGLSL.cpp
+++ b/src/compiler/translator/VersionGLSL.cpp
@@ -120,31 +120,17 @@
 
 bool TVersionGLSL::visitAggregate(Visit, TIntermAggregate *node)
 {
-    switch (node->getOp())
+    if (node->getOp() == EOpConstruct && node->getType().isMatrix())
     {
-        case EOpConstructMat2:
-        case EOpConstructMat2x3:
-        case EOpConstructMat2x4:
-        case EOpConstructMat3x2:
-        case EOpConstructMat3:
-        case EOpConstructMat3x4:
-        case EOpConstructMat4x2:
-        case EOpConstructMat4x3:
-        case EOpConstructMat4:
+        const TIntermSequence &sequence = *(node->getSequence());
+        if (sequence.size() == 1)
         {
-            const TIntermSequence &sequence = *(node->getSequence());
-            if (sequence.size() == 1)
+            TIntermTyped *typed = sequence.front()->getAsTyped();
+            if (typed && typed->isMatrix())
             {
-                TIntermTyped *typed = sequence.front()->getAsTyped();
-                if (typed && typed->isMatrix())
-                {
-                    ensureVersionIsAtLeast(GLSL_VERSION_120);
-                }
+                ensureVersionIsAtLeast(GLSL_VERSION_120);
             }
-            break;
         }
-        default:
-            break;
     }
     return true;
 }