Add stubs for switch and case output

BUG=angle:921

Change-Id: I58bd645a8d53ef5bad9b680e54c8948d50932fca
Reviewed-on: https://chromium-review.googlesource.com/251525
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/compiler/translator/Intermediate.cpp b/src/compiler/translator/Intermediate.cpp
index e5dc968..b8398e7 100644
--- a/src/compiler/translator/Intermediate.cpp
+++ b/src/compiler/translator/Intermediate.cpp
@@ -461,17 +461,19 @@
 TIntermSwitch *TIntermediate::addSwitch(
     TIntermTyped *init, TIntermAggregate *statementList, const TSourceLoc &line)
 {
-    mInfoSink.info.message(EPrefixInternalError, line,
-        "Switch statements are disabled for now");
-    return nullptr;
+    TIntermSwitch *node = new TIntermSwitch(init, statementList);
+    node->setLine(line);
+
+    return node;
 }
 
 TIntermCase *TIntermediate::addCase(
     TIntermTyped *condition, const TSourceLoc &line)
 {
-    mInfoSink.info.message(EPrefixInternalError, line,
-        "Case labels and default labels are disabled for now");
-    return nullptr;
+    TIntermCase *node = new TIntermCase(condition);
+    node->setLine(line);
+
+    return node;
 }
 
 //
diff --git a/src/compiler/translator/OutputGLSLBase.cpp b/src/compiler/translator/OutputGLSLBase.cpp
index 175edbd..a3db2ee 100644
--- a/src/compiler/translator/OutputGLSLBase.cpp
+++ b/src/compiler/translator/OutputGLSLBase.cpp
@@ -638,6 +638,18 @@
     return false;
 }
 
+bool TOutputGLSLBase::visitSwitch(Visit, TIntermSwitch *)
+{
+    UNIMPLEMENTED();
+    return false;
+}
+
+bool TOutputGLSLBase::visitCase(Visit, TIntermCase *)
+{
+    UNIMPLEMENTED();
+    return false;
+}
+
 bool TOutputGLSLBase::visitAggregate(Visit visit, TIntermAggregate *node)
 {
     bool visitChildren = true;
diff --git a/src/compiler/translator/OutputGLSLBase.h b/src/compiler/translator/OutputGLSLBase.h
index d60283a..eb5c582 100644
--- a/src/compiler/translator/OutputGLSLBase.h
+++ b/src/compiler/translator/OutputGLSLBase.h
@@ -37,6 +37,8 @@
     virtual bool visitBinary(Visit visit, TIntermBinary *node);
     virtual bool visitUnary(Visit visit, TIntermUnary *node);
     virtual bool visitSelection(Visit visit, TIntermSelection *node);
+    virtual bool visitSwitch(Visit visit, TIntermSwitch *node);
+    virtual bool visitCase(Visit visit, TIntermCase *node);
     virtual bool visitAggregate(Visit visit, TIntermAggregate *node);
     virtual bool visitLoop(Visit visit, TIntermLoop *node);
     virtual bool visitBranch(Visit visit, TIntermBranch *node);
diff --git a/src/compiler/translator/OutputHLSL.cpp b/src/compiler/translator/OutputHLSL.cpp
index 2811a50..876dbb7 100644
--- a/src/compiler/translator/OutputHLSL.cpp
+++ b/src/compiler/translator/OutputHLSL.cpp
@@ -2242,6 +2242,18 @@
     return false;
 }
 
+bool OutputHLSL::visitSwitch(Visit, TIntermSwitch *)
+{
+    UNIMPLEMENTED();
+    return false;
+}
+
+bool OutputHLSL::visitCase(Visit, TIntermCase *)
+{
+    UNIMPLEMENTED();
+    return false;
+}
+
 void OutputHLSL::visitConstantUnion(TIntermConstantUnion *node)
 {
     writeConstantUnion(node->getType(), node->getUnionArrayPointer());
diff --git a/src/compiler/translator/OutputHLSL.h b/src/compiler/translator/OutputHLSL.h
index 029d56c..4c547c8 100644
--- a/src/compiler/translator/OutputHLSL.h
+++ b/src/compiler/translator/OutputHLSL.h
@@ -56,6 +56,8 @@
     bool visitBinary(Visit visit, TIntermBinary*);
     bool visitUnary(Visit visit, TIntermUnary*);
     bool visitSelection(Visit visit, TIntermSelection*);
+    bool visitSwitch(Visit visit, TIntermSwitch *);
+    bool visitCase(Visit visit, TIntermCase *);
     bool visitAggregate(Visit visit, TIntermAggregate*);
     bool visitLoop(Visit visit, TIntermLoop*);
     bool visitBranch(Visit visit, TIntermBranch*);